0

Immutables ライブラリ ( https://immutables.github.io ) を使用しています。クラスを JSON にシリアル化する必要があります (私は Jackson を使用しています)。出力 JSON のオプション フィールドをスキップしたい。Immutables の前は@JsonInclude(JsonInclude.Include.NON_EMPTY)、クラス レベルで提供していました。

Immutables はその注釈を尊重していないようです。すべての Optional フィールドに注釈を付けると、正常に@JsonInclude(JsonInclude.Include.NON_EMPTY)機能します。

クラスレベル(フィールドレベルではない)の注釈を使用して、空のオプションのシリアル化をスキップするようにイミュータブルに指示することは可能ですか? わかりorg.immutables.value.Value.Style#additionalJsonAnnotationsましたが、それを使用して渡されたカスタマイズされた注釈はありません。

クラスパスに jackson-datatype-jdk8 がありcom.fasterxml.jackson.databind.ObjectMapper

mapper.registerModule(new Jdk8Module().configureAbsentsAsNulls(true));

4

1 に答える 1

3

この問題は、バージョン v2.3.6 (おそらくそれ以前) 以降の Immutables で解決されています。Immutables は、Jackson の およびその他のクラス レベル (またはフィールド レベル) の注釈を尊重@JsonInclude@JsonPropertyOrderています。これらの注釈は、生成された Immutable クラスにコピーされ、期待どおりに機能します。

于 2016-11-19T13:39:53.627 に答える