Maison >Java >javaDidacticiel >Comment puis-je configurer Jackson pour qu'il utilise uniquement les champs pour la sérialisation et la désérialisation ?
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)
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));
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; } }
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!