Maison > Java > javaDidacticiel > Comment configurer ObjectMapper au printemps pour la sérialisation et la désérialisation JSON personnalisées ?

Comment configurer ObjectMapper au printemps pour la sérialisation et la désérialisation JSON personnalisées ?

Mary-Kate Olsen
Libérer: 2024-12-05 07:15:16
original
877 Les gens l'ont consulté

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

Configuration d'ObjectMapper au Spring

Au Spring, l'ObjectMapper peut être configuré pour répondre à des exigences spécifiques. Ceci est particulièrement utile lorsque vous souhaitez contrôler le comportement de sérialisation et de désérialisation de vos données JSON.

Un scénario courant consiste à exclure certaines propriétés de la sérialisation à moins qu'elles ne soient explicitement annotées. Pour y parvenir, nous suivons ces étapes :

  1. Créer un ObjectMapper personnalisé :

    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));
        }
    }
    Copier après la connexion
  2. Inclure l'ObjectMapper personnalisé dans Spring configuration :

    <bean>
    Copier après la connexion
  3. Configurer Spring MVC pour utiliser l'ObjectMapper personnalisé :

    <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>
    Copier après la connexion

Cependant, cette approche peut ne pas fonctionner comme prévu si vous utilisez les versions Spring 3.0.5 et Jackson 1.8.0. Pour résoudre ce problème, il est recommandé d'utiliser la configuration basée sur les annotations suivante avec Spring Boot et Jackson 2.4.6 ou version ultérieure :

@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;
    }
}
Copier après la connexion

Cette configuration permettra à l'ObjectMapper de sérialiser uniquement les propriétés qui ont le @ Annotation JsonProperty, satisfaisant l'exigence souhaitée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal