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

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

DDD
Libérer: 2024-12-14 03:53:09
original
309 Les gens l'ont consulté

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

Configurer Jackson pour utiliser les champs uniquement pour la sérialisation et la désérialisation

Le comportement par défaut de Jackson implique l'utilisation à la fois de propriétés (getters et setters) et de champs pour la sérialisation. et désérialisation vers JSON. Cependant, certains utilisateurs peuvent préférer donner la priorité aux champs comme seule source de configuration de sérialisation, à l'exclusion des propriétés.

Approche basée sur les annotations pour les classes individuelles

Pour appliquer ce comportement sur par classe, l'annotation @JsonAutoDetect peut être utilisée :

@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
Copier après la connexion

Cette annotation exclut les propriétés de la considération de Jackson, en veillant à ce que seuls les champs soient utilisés pour la liaison des données.

Configuration globale pour toutes les classes

Au lieu d'appliquer l'annotation à chaque classe manuellement, il est possible de configurer ce comportement globalement pour toutes les classes. Pour y parvenir, l'ObjectMapper doit être modifié 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));
Copier après la connexion

Cette configuration remplace les paramètres de visibilité par défaut et demande à Jackson d'utiliser uniquement les champs pour la sérialisation et la désérialisation dans toutes les classes.

Accès global au mappeur configuré

Pour un accès global à l'ObjectMapper configuré, une classe wrapper peut être used :

public class MyGlobalMapper {
    private static final ObjectMapper MAPPER = new ObjectMapper();

    static {
        MAPPER.setVisibility(MAPPER.getSerializationConfig().getDefaultVisibilityChecker()
                .withFieldVisibility(JsonAutoDetect.Visibility.ANY)
                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withSetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE));
    }

    public static ObjectMapper get() {
        return MAPPER;
    }
}
Copier après la connexion

Cette classe wrapper fournit une méthode statique pour récupérer l'ObjectMapper configuré, lui permettant d'être utilisé dans toute l'application sans avoir besoin de le reconfigurer à chaque fois.

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