3

短い質問: ジャクソンの値に応じて、オプションでフィールドをシリアル化する方法はありますか? 「特定の整数フィールドの値が 0 の場合、シリアル化しないでください」など、jackson に伝える方法はありますか。

(私の言いたいことが理解できたら、以下は飛ばしてください)

長い質問別名なぜ私はそのようなことをしたいのですか: Spring MVC モデルクラスがあるとします

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class Foo {
    int a0;
    int a1;
    .
    .
    .
    int a99;
    String c;

    //getters and setters
}

の新しいオブジェクトのFoo場合、すべてintが 0 に初期化さStringnullます。したがって、このオブジェクトをシリアル化するとint、 のおかげで、すべて 0 に設定された s のみが結果として得られ@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)ます。

実際の操作では、a1...a99 の一部、たとえば a20 から a26 を意味のある値 (私にとっては 0 以外の値) に設定して応答する必要があるとします。それらのフィールドのみを送信するのが賢明でしょう。

これを達成するために、いつでもint宣言を に変更できIntegerます。しかし、私はintに関する数値計算がたくさんあり、ネットで少し熟考し、thisthisのようなリンクに出くわしたので、ちょっとプリミティブ型に固執したいと思います。両方のニーズを満たすソリューションはありますか?

4

2 に答える 2

4

JSON フィルターを検討してください。ただし、独自のインスタンスを実装する必要があると思いますBeanPropertyFilter

于 2013-10-09T14:34:21.387 に答える
2

わかった。私が欠けていたのは@JsonInclude(Include.NON_DEFAULT)

およびデフォルトのコンストラクター。

また、Jackson の依存関係を codehaus からfasterxmlに移行しました。

于 2013-10-10T06:44:12.947 に答える