[java] Jackson이 값이 null 인 경우 직렬화 중에 필드를 무시하도록 지시하는 방법은 무엇입니까?

해당 필드 값이 null 인 경우 직렬화 중에 필드 값을 무시하도록 Jackson을 구성하는 방법

예를 들면 다음과 같습니다.

public class SomeClass {
   // what jackson annotation causes jackson to skip over this value if it is null but will 
   // serialize it otherwise 
   private String someValue; 
}



답변

Jackson> 2.0을 사용하여 null 값으로 속성을 직렬화하지 않도록하려면 직접을 구성ObjectMapper 하거나 @JsonInclude주석 을 사용할 수 있습니다 .

mapper.setSerializationInclusion(Include.NON_NULL);

또는:

@JsonInclude(Include.NON_NULL)
class Foo
{
  String bar;
}

또는 @JsonInclude값이 null이 아닌 경우 속성이 표시되도록 getter에서 사용할 수 있습니다 .

더 완벽한 예에서 볼 수 있습니다 내 대답잭슨을 통해 직렬화하기에서 빈 내부지도 내부 널 (null) 값과 널 (null) 필드를 방지하는 방법 .


답변

Jackson> 1.9.11 및 <2.x에서는 @JsonSerialize주석을 사용 하여 다음을 수행하십시오.

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)


답변

다른 답변을 확장하기 위해-필드별로 null 값 생략을 제어 해야하는 경우 해당 필드에 주석을 추가하십시오 (또는 필드의 ‘getter’에 주석을 달으십시오).

예- 여기서는 fieldOnenull 인 경우 에만 json에서 생략됩니다. fieldTwonull인지 여부에 관계없이 항상 포함됩니다.

public class Foo {

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

    private String fieldTwo;
}

클래스의 모든 null 값을 기본값으로 생략하려면 클래스에 주석을 답니다. 필요한 경우 필드 별 / 게터 주석을 사용하여이 기본값을 무시할 수 있습니다.

예 – 여기 fieldOnefieldTwo그들이 각각 null의 경우이 클래스 주석하여 기본 설정이기 때문에, JSON에서 ommitted됩니다. fieldThree그러나 기본값을 무시하고 필드의 주석으로 인해 항상 포함됩니다.

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

    private String fieldOne;

    private String fieldTwo;

    @JsonInclude(JsonInclude.Include.ALWAYS)
    private String fieldThree;
}

최신 정보

위의 내용은 Jackson 2 입니다. 들어 이전 버전 잭슨의 당신은 사용할 필요가 :

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) 

대신에

@JsonInclude(JsonInclude.Include.NON_NULL)

이 업데이트가 유용하면 아래에서 ZiglioUK의 답변을 찬성하십시오. 답변을 업데이트하기 전에 최신 Jackson 2 주석을 지적했습니다!


답변

Jackson 2.x에서 다음을 사용하십시오.

@JsonInclude(JsonInclude.Include.NON_NULL)


답변

다음과 같은 매퍼 구성을 사용할 수 있습니다.

mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL);

2.5 이후로 다음을 수행 할 수 있습니다.

mapper.setSerializationInclusion(Include.NON_NULL);


답변

당신은 설정할 수 있습니다 application.properties:

spring.jackson.default-property-inclusion=non_null

또는 application.yaml:

spring:
  jackson:
    default-property-inclusion: non_null

http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html


답변

나의 경우에는

@JsonInclude(Include.NON_EMPTY)

작동하게 만들었습니다.