web-dev-qa-db-ja.com

Spring Boot 1.2.3の場合、JSONシリアル化でnull値を無視するように設定するにはどうすればよいですか?

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);
18
crisli

これは、Spring Boot 1.3.0の拡張機能でした。

残念ながら、1.2.3でプログラムで設定する必要があります

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class Shop {
    //...
}
7
ikumen

application.propertiesファイルに次の行を追加します。

spring.jackson.default-property-inclusion = non_null

2.7より前のJacksonバージョンの場合:

spring.jackson.serialization-inclusion = non_null

48
cjungel

これは廃止前の良い解決策でした:@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

しかし、今は次を使用する必要があります。

@JsonInclude(JsonInclude.Include.NON_NULL) public class ClassName { ...

こちらをご覧ください: https://fasterxml.github.io/jackson-annotations/javadoc/2.7/com/fasterxml/jackson/annotation/JsonInclude.Include.html

14
Itay

Spring Boot 1.4.xの場合、次の行をapplication.propertiesに含めることができます。

spring.jackson.default-property-inclusion=non_null

10
Bruno Régnier

クラス全体、

@JsonInclude(JsonInclude.Include.NON_NULL)
public class MyModel { .... }

物件全体:

public class MyModel {   
    .....

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String myProperty;

    .....
}
7
Mehul Katpara