Spring Boot 1.2.3では、プロパティファイルを使用してJackson ObjectMapperをカスタマイズできます。しかし、ObjectをJSON文字列にシリアル化するときに、Jacksonがnull値を無視するように設定できる属性が見つかりませんでした。
spring.jackson.deserialization.*= # see Jackson's DeserializationFeature
spring.jackson.generator.*= # see Jackson's JsonGenerator.Feature
spring.jackson.mapper.*= # see Jackson's MapperFeature
spring.jackson.parser.*= # see Jackson's JsonParser.Feature
spring.jackson.serialization.*=
同じコードをアーカイブしたい
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
これは、Spring Boot 1.3.0の拡張機能でした。
残念ながら、1.2.3でプログラムで設定する必要があります
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class Shop {
//...
}
application.properties
ファイルに次の行を追加します。
spring.jackson.default-property-inclusion = non_null
2.7より前のJacksonバージョンの場合:
spring.jackson.serialization-inclusion = non_null
これは廃止前の良い解決策でした:@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
しかし、今は次を使用する必要があります。
@JsonInclude(JsonInclude.Include.NON_NULL) public class ClassName { ...
Spring Boot 1.4.xの場合、次の行をapplication.propertiesに含めることができます。
spring.jackson.default-property-inclusion=non_null
クラス全体、
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MyModel { .... }
物件全体:
public class MyModel {
.....
@JsonInclude(JsonInclude.Include.NON_NULL)
private String myProperty;
.....
}