ジャクソンがフィールドのみを使用するように指定する方法 - できればグローバルに 質問する

ジャクソンがフィールドのみを使用するように指定する方法 - できればグローバルに 質問する

デフォルトの jackon の動作では、プロパティ (ゲッターとセッター) とフィールドの両方を使用して、JSON にシリアル化および逆シリアル化しているようです。

フィールドをシリアル化構成の正規のソースとして使用したいので、jackson にプロパティをまったく参照させたくありません。

アノテーションを使用して、個々のクラスごとにこれを行うことができます。

 @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)

しかし、これをすべてのクラスに導入したいわけではありません...

これをグローバルに設定することは可能ですか? たとえば、オブジェクト マッパーにいくつか追加するなどでしょうか?

ベストアンサー1

個々の ObjectMapper を次のように構成できます。

ObjectMapper mapper  = new ObjectMapper();
mapper.setVisibility(mapper.getSerializationConfig().getDefaultVisibilityChecker()
                .withFieldVisibility(JsonAutoDetect.Visibility.ANY)
                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withSetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE));

グローバルに設定したい場合は、通常、ラッパー クラスを介して構成されたマッパーにアクセスします。

おすすめ記事