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
Susan Sarandonoriginal
2024-12-07 14:02:17728parcourir

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);
    }
}

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>

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;
    }
}

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!

Déclaration:
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