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!