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

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

DDD
Libérer: 2024-12-02 15:19:11
original
603 Les gens l'ont consulté

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

Comment configurer ObjectMapper dans Spring

Problème :

Vous souhaitez configurer ObjectMapper dans Spring pour sérialiser uniquement les éléments annotés avec @JsonProperty. Cependant, malgré le respect des instructions recommandées, la classe NumbersOfNewEvents contient toujours tous les attributs une fois sérialisée.

Explication :

Dans le CompanyObjectMapper personnalisé, vous avez défini le vérificateur de visibilité. pour masquer tous les champs et getters/setters par défaut. Cela empêche ObjectMapper d'accéder et de sérialiser les champs newAccepts et openRequests.

Solution :

Pour obtenir le résultat souhaité, vous pouvez utiliser une approche plus ciblée pour configurer la visibilité vérificateur. Voici un exemple :

public class CompanyObjectMapper extends ObjectMapper {
    public CompanyObjectMapper() {
        super();
        SerializationConfig config = getSerializationConfig();
        config.withView(Some.class)   // Specify which view to use
             .withVisibility(JsonAutoDetect.Visibility.NONE)
             .withVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
    }
}
Copier après la connexion

Cette configuration permettra de sérialiser les propriétés avec l'annotation @JsonProperty, tout en gardant les autres champs masqués.

Configuration Spring Boot :

Si vous utilisez Spring Boot et Jackson 2.4.6 ou supérieur, vous pouvez utiliser ce qui suit configuration :

@Configuration
public class JacksonConfiguration {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);  // Enable default typing for polymorphic types
        mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);      // Allow serialization of fields
        mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);  // Enable default view inclusion
        return mapper;
    }
}
Copier après la connexion

Cette configuration active la saisie par défaut pour les types polymorphes, permet la sérialisation de tous les champs et active l'inclusion de la vue par défaut.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal