2017-11-20 26 views
1

나는 Dropwizard의 Jackson을 사용하고 있습니다. 내 수업에는 다음과 같은 필드가 있습니다.Jackson - 변환을 수행 할 때 joda.time.DateTime 필드의 null 값을 무시할 수 없습니까?

public class SubscriptionInfo{ 
     @JsonProperty private Integer subscriptionId; 
     @JsonProperty private Integer packageId; 
     @JsonProperty private DateTime startDate; 
     @JsonProperty private DateTime endDate; 
     // other fields, getters, setters 
     ... 
} 

startDate 또는 endDate가 null 인 경우 변환 된 JSON에 키가 있어야합니다. @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)과 같은 특수 효과를 수행하지 않았습니다. 변환 된 JSON 모양은 다음과 같습니다.

 { 
      "subscriptionId": 111, 
      "packageId": null, 
      "startDate": 1477908963000 
     } 

"packageId"는 있지만 "endDate"는 표시되지 않습니다. null 일 때 "startDate"및 "endDate"에 대해 보존 된 키를 가질 수 있는지 궁금합니다.

업데이트 : 0.9.2과 잭슨 2.6.1을 사용하고

. jackson-datatype-joda 2.6.1에 대한 의존성이있는 것 같습니다. 이것이 JodaModule의 기본 동작인지 궁금합니다. 그렇다면 어떻게 변경할 수 있습니까?

+1

문제를 재현하는 완전한 최소 예를 게시하십시오. 주석이 있거나 활성화 된 기능이있어 null 인 경우 해당 필드를 제거하도록 명시 적으로 요청합니다. –

+0

@Alex 어떤 잭슨 버전을 사용하고 있습니까? 또는 어떤 버전의 DW? 감사. –

+0

@JsonProperty를 제거하고 클래스 정의 맨 위에 @JsonInclude (ALWAYS)를 추가하십시오. –

답변

0

이 알려진 잭슨 수정되었습니다 문제 2.8 이상과 2.7.6+ 것 같다 :

https://github.com/dropwizard/dropwizard/issues/1627

1.0.0+에 DW 버전을 증가 문제를 해결하는 것 같다. 또한 DW가 문제가 해결 된 지점을 가리키는 데 사용하는 Jackson 종속성을 조작 할 수 있지만 다른 여러 문제가 발생할 수 있습니다.