ホームページ >Java >&#&チュートリアル >カスタム JSON シリアル化および逆シリアル化のために Spring で ObjectMapper を構成するにはどうすればよいですか?

カスタム JSON シリアル化および逆シリアル化のために Spring で ObjectMapper を構成するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-05 07:15:16842ブラウズ

How to Configure ObjectMapper in Spring for Custom JSON Serialization and Deserialization?

Spring での ObjectMapper の構成

Spring では、特定の要件に合わせて ObjectMapper を構成できます。これは、JSON データのシリアル化と逆シリアル化の動作を制御する場合に特に便利です。

一般的なシナリオの 1 つは、明示的に注釈が付けられていない限り、特定のプロパティをシリアル化から除外することです。これを実現するには、次の手順に従います:

  1. カスタム ObjectMapper を作成します:

    public class CompanyObjectMapper extends ObjectMapper {
        public CompanyObjectMapper() {
            super();
            setVisibilityChecker(getSerializationConfig()
                    .getDefaultVisibilityChecker()
                    .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
                    .withFieldVisibility(JsonAutoDetect.Visibility.NONE)
                    .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                    .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
                    .withSetterVisibility(JsonAutoDetect.Visibility.DEFAULT));
        }
    }
  2. カスタム ObjectMapper を Spring のconfiguration:

    <bean>
  3. カスタム ObjectMapper を使用するように Spring MVC を構成します:

    <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="jacksonObjectMapper" />
                </bean>
            </list>
        </property>
    </bean>

ただし、Spring バージョン 3.0.5 および 3.0.5 を使用している場合、このアプローチは期待どおりに機能しない可能性があります。ジャクソン1.8.0。この問題を解決するには、Spring Boot および Jackson 2.4.6 以降で次のアノテーションベースの構成を使用することをお勧めします:

@Configuration
public class JacksonConfiguration {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);

        return mapper;
    }
}

この構成により、ObjectMapper は @ を持つプロパティのみをシリアル化できます。 JsonProperty アノテーション。必要な要件を満たします。

以上がカスタム JSON シリアル化および逆シリアル化のために Spring で ObjectMapper を構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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