我在这样的 REST 应用程序中使用 Jackson 进行 JSON 序列化:
import javax.ws.rs.core.Application;
import org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider;
import org.codehaus.jackson.map.SerializationConfig;
public class MyApplication extends Application {
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(MyResource1.class);
classes.add(MyResource2.class);
...
return classes;
}
public Set<Object> getSingletons() {
Set<Object> singletons = new HashSet<Object>();
singletons.add(new JacksonJaxbJsonProvider().configure(
SerializationConfig.Feature.WRITE_NULL_PROPERTIES, false)); // (*)
return singletons;
}
}
(*) 否则用@XmlElementRef 注释的必要字段将在JSON 输出中显示为"myField": null
null(而不是不出现),而用@XmlElement 注释的字段很好。
但是,SerializationConfig.Feature.WRITE_NULL_PROPERTIES
不推荐使用 来支持SerializationConfig.setSerializationInclusion(..)
(1),不推荐使用它本身来支持SerializationConfig.withSerializationInclusion(..)
或通过 ObjectMapper 配置(2)
但我认为使用new JacksonJaxbJsonProvider().configure(..)
的确实是配置一个 ObjectMapper (我看了一下代码)。
所以我的问题是:如何在不使用任何已弃用的属性且不(重新)创建新的配置类的情况下正确配置它?