我正在使用Restlet版本2.1.7,这是我的Application类
public final class MyApplication extends Application {
@Override
public Restlet createInboundRoot() {
Router router = (Router)super.createInboundRoot();
.
.
.
List<ConverterHelper> converters = Engine.getInstance().getRegisteredConverters();
JacksonConverter jacksonConverter = (JacksonConverter)converters.get(2);
SerializationConfig serializationConfig = jacksonConverter.getObjectMapper().getSerializationConfig();
serializationConfig.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
return router;
}
}
现在,我尝试升级到Restlet版本2.3.4,并在下一行收到编译错误:
SerializationConfig serializationConfig = jacksonConverter.getObjectMapper().getSerializationConfig();
编译错误是JacksonConverter不再具有方法getObjectMapper()
如何克服此编译错误?我将为应用程序和/或响应解决方案感到高兴。
最佳答案
我使用的解决方案是按以下方式添加JacksonConverter
:
List<ConverterHelper> converters = Engine.getInstance().getRegisteredConverters();
converters.add(new JacksonConverter());
另外,为了将
SerializationInclusion
设置为JsonSerialize.Inclusion.NON_NULL
,我在资源中使用的每个响应类都使用了注释@JsonInclude(JsonInclude.Include.NON_NULL)
。我找不到更通用的解决方案(在应用程序级别),但这似乎可以正常工作。