2017-11-20 20 views
1

私はDropwizardの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が使用しているジャクソンの依存関係を操作することもできますが、その他のいくつかの問題が発生する可能性があります。

関連する問題