ホームページ >Java >&#&チュートリアル >シリアル化と逆シリアル化にフィールドのみを使用するように Jackson を構成するにはどうすればよいですか?
シリアル化と逆シリアル化のみにフィールドを使用するように Jackson を構成する
Jackson のデフォルトの動作には、プロパティ (ゲッターとセッター) とフィールドの両方をシリアル化に使用することが含まれますそしてJSONへの逆シリアル化。ただし、一部のユーザーは、プロパティを除き、シリアル化設定の唯一のソースとしてフィールドを優先することを好む場合があります。
個々のクラスに対するアノテーションベースのアプローチ
この動作を強制するにはクラスごとに @JsonAutoDetect アノテーションを使用できます:
@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
このアノテーションJackson の考慮事項からプロパティを除外し、フィールドのみがデータ バインディングに使用されるようにします。
すべてのクラスのグローバル構成
各クラスにアノテーションを手動で適用する代わりに、この動作をすべてのクラスに対してグローバルに構成することが可能です。これを実現するには、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));
この構成は、デフォルトの可視性設定をオーバーライドし、すべてのクラスでシリアル化と逆シリアル化にフィールドのみを使用するように Jackson に指示します。
設定されたマッパーへのグローバルなアクセス
グローバル アクセスの場合構成された ObjectMapper に対して、ラッパー クラスを使用できます。
public class MyGlobalMapper { private static final ObjectMapper MAPPER = new ObjectMapper(); static { MAPPER.setVisibility(MAPPER.getSerializationConfig().getDefaultVisibilityChecker() .withFieldVisibility(JsonAutoDetect.Visibility.ANY) .withGetterVisibility(JsonAutoDetect.Visibility.NONE) .withSetterVisibility(JsonAutoDetect.Visibility.NONE) .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)); } public static ObjectMapper get() { return MAPPER; } }
このラッパー クラスは、構成された ObjectMapper を取得するための静的メソッドを提供し、毎回再構成することなくアプリケーション全体で使用できるようにします。 .
以上がシリアル化と逆シリアル化にフィールドのみを使用するように Jackson を構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。