我正在使用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)

我找不到更通用的解决方案(在应用程序级别),但这似乎可以正常工作。

07-26 04:11