次のように、REST アプリケーションで JSON シリアル化に Jackson を使用します。
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 を構成することです (コードを調べました)。
したがって、私の質問は次のとおりです。非推奨のプロパティを使用せず、新しい構成クラスを (再) 作成せずに、これを適切に構成するにはどうすればよいですか?