Jackson Changer Dynamiquement JsonIgnore
J'ai une classe et il y a des variables à l'intérieur ainsi. Parfois, j'ai envie d'ignorer certains domaines, et parfois pas lors de la désérialisation (peut-être lors de la sérialisation de trop). Comment puis-je le faire à Jackson?
Vous devez vous connecter pour publier un commentaire.
Pour la sérialisation, "les propriétés de filtrage" entrée de blog devrait vous aider. La désérialisation côté a moins de soutien, car il est plus commun de vouloir filtrer les trucs qui est écrit.
Une approche possible consiste à sous-classe
JacksonAnnotationIntrospector
, remplacer la méthode(s) que l'introspection ignorability de méthodes (et/ou des champs) à utiliser quelle que soit la logique que vous voulez.Il peut aussi vous aider si vous avez donné un exemple d'application pratique, j'.e quoi et pourquoi vous essayez de l'empêcher d'être désérialisé.
@JsonFilter
extrmemely bien adapté à mon cas d'utilisation où je veux plus de contrôle en termes de récupération (sérialisation), mais pas au-delà d'un certain niveau qu'il finit par obtenir de manière récursive par les cheveux. Orm ont tendance à être comme ça.Vous pouvez utiliser JsonViews ( pris à l'origine de http://wiki.fasterxml.com/JacksonJsonViews - cassé maintenant - archive web lien: https://web.archive.org/web/20170831135842/http://wiki.fasterxml.com/JacksonJsonViews )
Le citant:
Tout d'abord, la définition de vues sur les moyens de déclarer des classes; vous pouvez réutiliser existants, ou tout simplement créer de faux classes: ils sont juste afficher les identifiants avec les informations de relation (enfant hérite de l'adhésion des parents):
Avec de telles définitions de vue, la sérialisation serait fait comme suit:
Vous devriez probablement regarder le les modules de fonction de ces dernières Jackson versions.
Un mécanisme possible serait d'utiliser un BeanDeserializerModifier.
J'ai été à la recherche d'un utile tutoriel en ligne ou par exemple, mais rien n'apparaît immédiatement. Il pourrait être possible de travailler à quelque chose, si on en sait plus sur votre contexte. Êtes-vous la gestion de votre
ObjectMapper
s manuellement, ou leur utilisation dans un JAX-RS réglage de l'injection au Printemps, ou quoi?