Maison  >  Article  >  Java  >  Comment puis-je configurer Jackson pour qu'il utilise uniquement les champs pour la sérialisation et la désérialisation à l'échelle mondiale ?

Comment puis-je configurer Jackson pour qu'il utilise uniquement les champs pour la sérialisation et la désérialisation à l'échelle mondiale ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-24 05:56:10155parcourir

How Can I Configure Jackson to Use Only Fields for Serialization and Deserialization Globally?

Configurer Jackson pour utiliser uniquement les champs : une approche globale

Le comportement par défaut de Jackson implique l'utilisation à la fois de propriétés (getters/setters) et de champs pour la sérialisation. et la désérialisation. Cependant, vous souhaiterez peut-être utiliser les champs exclusivement comme source de configuration de sérialisation.

Annotation de classe individuelle

Vous pouvez appliquer l'annotation suivante à chaque classe individuelle pour y parvenir. :

@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)

Cependant, cette méthode nécessite des annotations répétitives sur chaque classe, qui peuvent être fastidieux.

Configuration globale

Pour configurer ce comportement globalement, modifiez les ObjectMappers individuels comme suit :

ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(mapper.getSerializationConfig().getDefaultVisibilityChecker()
                .withFieldVisibility(JsonAutoDetect.Visibility.ANY)
                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withSetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE));

Accès global via Wrapper Classe

Pour un accès global au mappeur configuré, pensez à implémenter un wrapper class :

Enveloppez le mappeur dans une classe/fonction pour l'exposer globalement si nécessaire :

public class JsonMapperWrapper {
    private static final ObjectMapper mapper = <configure ObjectMapper as above>;

    public static ObjectMapper getMapper() {
        return mapper;
    }
}

Avec cette approche, vous pouvez accéder au mappeur configuré via JsonMapperWrapper.getMapper().

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