Maison > Java > javaDidacticiel > Comment personnaliser l'ObjectMapper de Spring pour sérialiser uniquement les propriétés annotées @JsonProperty ?

Comment personnaliser l'ObjectMapper de Spring pour sérialiser uniquement les propriétés annotées @JsonProperty ?

Mary-Kate Olsen
Libérer: 2024-12-04 06:16:11
original
1065 Les gens l'ont consulté

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

Configuration d'ObjectMapper dans Spring

Dans les applications Spring, l'ObjectMapper est un composant crucial pour sérialiser et désérialiser les données JSON. Vous pouvez personnaliser l'ObjectMapper pour répondre à des exigences spécifiques, telles que la sérialisation uniquement des propriétés annotées avec @JsonProperty.

Pour y parvenir, la première étape consiste à créer une classe ObjectMapper personnalisée qui étend la classe de base ObjectMapper fournie par Jackson. Remplacez le vérificateur de visibilité par défaut pour exclure les propriétés non annotées :

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

Ensuite, enregistrez le bean ObjectMapper personnalisé dans le fichier de configuration Spring (servlet.xml) :

<bean>
Copier après la connexion

Enfin, configurez le framework MVC basé sur les annotations 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="customObjectMapper" />
            </bean>
        </list>
    </property>
</bean>
Copier après la connexion

Dans l'exemple de code fourni, le La classe NumbersOfNewEvents contient deux attributs publics :

public class NumbersOfNewEvents implements StatusAttribute {
    public Integer newAccepts;
    public Integer openRequests;
    // ...
}
Copier après la connexion

Cependant, seul l'attribut newAccepts est annoté avec @JsonProperty :

@JsonProperty
public Integer newAccepts;
Copier après la connexion

En configurant l'ObjectMapper comme décrit ci-dessus, seul l'attribut newAccepts doit être sérialisé lorsque l'objet NumbersOfNewEvents est converti en JSON. En effet, l'ObjectMapper personnalisé exclura les propriétés non annotées lors de la sérialisation.

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!

source:php.cn
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