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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-04 06:16:111084ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。