Maison > Java > javaDidacticiel > Comment configurer l'ObjectMapper de Spring pour sérialiser uniquement les champs annotés @JsonProperty ?

Comment configurer l'ObjectMapper de Spring pour sérialiser uniquement les champs annotés @JsonProperty ?

Susan Sarandon
Libérer: 2024-12-07 14:02:17
original
721 Les gens l'ont consulté

How to Configure Spring's ObjectMapper to Serialize Only @JsonProperty Annotated Fields?

Configuration d'ObjectMapper au printemps : restreindre la sérialisation des champs

Pour configurer l'ObjectMapper pour sérialiser uniquement les champs annotés avec @JsonProperty, envisagez l'approche suivante :

1. Créez un ObjectMapper personnalisé

public class CustomObjectMapper extends ObjectMapper {
    public CustomObjectMapper() {
        super();
        setVisibility(Visibility.NONE).enable(Visibility.NON_EMPTY);
    }
}
Copier après la connexion

Cet ObjectMapper personnalisé désactive la sérialisation des champs non annotés et inclut uniquement les champs dont la valeur est non nulle.

2. Enregistrez l'ObjectMapper personnalisé au printemps

Dans votre servlet.xml, enregistrez l'ObjectMapper personnalisé comme suit :

<bean>
Copier après la connexion

3. Mettre à jour la configuration basée sur les annotations

Assurez-vous que votre classe @Configuration enregistre le CountingJacksonHttpMessageConverter personnalisé :

@Configuration
public class JacksonConfiguration {

    @Bean
    public MappingJacksonHttpMessageConverter jsonConverter() {
        MappingJacksonHttpMessageConverter converter = new MappingJacksonHttpMessageConverter();
        converter.setObjectMapper(jacksonObjectMapper());
        return converter;
    }
}
Copier après la connexion

4. Assurez-vous d'une dépendance de version appropriée

Vérifiez que vous utilisez une version compatible de Jackson. Dans ce cas, Jackson 2.x est recommandé pour une utilisation avec Spring.

5. Vérifiez l'exclusion des annotations Jackson par défaut

Assurez-vous que les annotations Jackson par défaut sont exclues de la détection de visibilité en remplaçant la méthode setVisibility dans votre ObjectMapper personnalisé.

Considérations supplémentaires :

  • Cette approche sérialise uniquement les champs annotés avec @JsonProperty et pas ceux marqués avec d'autres annotations (par exemple, @JsonSerialize).
  • Notez que l'exclusion des champs de la sérialisation peut affecter la fonctionnalité d'autres composants qui reposent sur le comportement par défaut (par exemple, persistance, validation).
  • Pour une personnalisation plus avancée de la sérialisation, reportez-vous à la documentation Jackson.

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