杰克逊 - 在进行转换时,如何不忽略joda.time.DateTime字段的空值?

时间:2017-11-20 22:22:04

标签: java jackson dropwizard

我正在使用Dropwizard的杰克逊。我的课有一些像

这样的字段
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”不存在。我想知道当它们为空时我是否可以为“startDate”和“endDate”保留密钥。

更新

我正在使用0.9.2和jackson 2.6.1。 似乎对jackson-datatype-joda 2.6.1存在依赖性。我想知道这是否是JodaModule的默认行为。如果是这样,我该怎么改呢?

1 个答案:

答案 0 :(得分:0)

这似乎是一个已知问题,已在Jackson 2.8+和2.7.6 +中修复:

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

将DW版本增加到1.0.0+似乎可以解决问题。您还可以操纵DW用于指向问题已解决的问题的Jackson依赖项,但您可能遇到其他几个问题。