ホームページ > Java > &#&チュートリアル > @JsonProperty アノテーション付きプロパティのみをシリアル化するように Spring の ObjectMapper をカスタマイズする方法

@JsonProperty アノテーション付きプロパティのみをシリアル化するように Spring の ObjectMapper をカスタマイズする方法

Mary-Kate Olsen
リリース: 2024-12-04 06:16:11
オリジナル
1066 人が閲覧しました

How to Customize Spring's ObjectMapper to Serialize Only @JsonProperty Annotated Properties?

Spring での ObjectMapper の構成

Spring アプリケーションでは、ObjectMapper は JSON データをシリアル化および逆シリアル化するための重要なコンポーネントです。 @JsonProperty アノテーションが付けられたプロパティのみをシリアル化するなど、特定の要件を満たすように ObjectMapper をカスタマイズできます。

これを実現するには、最初のステップとして、Jackson が提供する基本 ObjectMapper クラスを拡張するカスタム ObjectMapper クラスを作成します。デフォルトの可視性チェッカーをオーバーライドして、アノテーションのないプロパティを除外します:

public class MyCustomObjectMapper extends ObjectMapper {
    public MyCustomObjectMapper() {
        super();
        setVisibilityChecker(getSerializationConfig()
                .getDefaultVisibilityChecker()
                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
                .withFieldVisibility(JsonAutoDetect.Visibility.NONE)
                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withSetterVisibility(JsonAutoDetect.Visibility.DEFAULT));
    }
}
ログイン後にコピー

次に、カスタム ObjectMapper Bean を Spring 構成ファイル (servlet.xml) に登録します:

<bean>
ログイン後にコピー

最後に、カスタムを使用するようにアノテーション駆動型 MVC フレームワークを構成します。 ObjectMapper:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                <property name="objectMapper" ref="customObjectMapper" />
            </bean>
        </list>
    </property>
</bean>
ログイン後にコピー

提供されているサンプル コードでは、NumbersOfNewEvents クラスに 2 つのパブリック属性が含まれています:

public class NumbersOfNewEvents implements StatusAttribute {
    public Integer newAccepts;
    public Integer openRequests;
    // ...
}
ログイン後にコピー

ただし、@JsonProperty:

@JsonProperty
public Integer newAccepts;
ログイン後にコピー
上記のように ObjectMapper を設定すると、 NewAccepts 属性は、NumbersOfNewEvents オブジェクトが JSON に変換されるときにシリアル化する必要があります。これは、カスタム ObjectMapper がシリアル化中にアノテーションのないプロパティを除外するためです。

以上が@JsonProperty アノテーション付きプロパティのみをシリアル化するように Spring の ObjectMapper をカスタマイズする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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