グローバルにシリアル化および逆シリアル化用のフィールドのみを使用するように Jackson を構成するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-24 05:56:10
オリジナル
154 人が閲覧しました

How Can I Configure Jackson to Use Only Fields for Serialization and Deserialization Globally?

フィールドのみを使用するように Jackson を構成する: グローバルなアプローチ

Jackson のデフォルトの動作には、シリアル化にプロパティ (ゲッター/セッター) とフィールドの両方を使用することが含まれますそしてデシリアライズ。ただし、フィールドをシリアル化設定のソースとしてのみ使用したい場合があります。

個別のクラス アノテーション

これを実現するには、次のアノテーションを個別のクラスに適用できます。 :

@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
ログイン後にコピー

ただし、このメソッドはすべてのクラスに繰り返しアノテーションを付ける必要があります。

グローバル構成

この動作をグローバルに構成するには、個々の 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));
ログイン後にコピー

Wrapper を介したグローバル アクセスクラス

設定されたマッパーへのグローバル アクセスについては、次のことを考慮してください。ラッパー クラスの実装:

必要に応じてマッパーをクラス/関数でラップし、グローバルに公開します:

public class JsonMapperWrapper {
    private static final ObjectMapper mapper = <configure ObjectMapper as above>;

    public static ObjectMapper getMapper() {
        return mapper;
    }
}
ログイン後にコピー

このアプローチでは、JsonMapperWrapper.getMapper( ).

以上がグローバルにシリアル化および逆シリアル化用のフィールドのみを使用するように Jackson を構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート