J'essaie de convertir l'objet Java à l'objet JSON à Tomcat / Jersey en utilisant Jackson. Et souhaitez supprimer la sérialisation (écrire) de certaines propriétés de manière dynamique.
Je peux utiliser JSONIGNORE, mais je veux faire la décision d'ignorer au moment de l'exécution. Toutes idées ?? p>
Donc, à titre d'exemple ci-dessous, je veux supprimer le champ "ID" lorsque je serai sérialiser l'objet utilisateur à JSON .. P>
new ObjectMapper.writeValueAsString(user); class User { private String id = null; private String firstName = null; private String lastName = null; //getters //setters }//end class
4 Réponses :
Je ne vois aucune façon de le faire. Si vous avez besoin de décider de manière dynamique quelles propriétés sont marshalées, je vous suggère de construire manuellement une carte code> de clés sur les valeurs de vos objets, puis passez ce carte code> à Jackson, plutôt que de passer directement l'objet code> utilisateur code>. p>
Merci. Je pense que le modèle de carte est un peu faible aussi, quand il s'agit de créer des matrices JSON. Mapper
@ kapil.isr: Oui, je le fait, je viens de l'essayer, ça marche bien. L'ordre des clés est différent, mais c'est parce que vous avez utilisé un hashmap code> plutôt qu'un
linkedhashmap code>.
Savez-vous également si ObjectMapper peut être partagé entre les threads, je sais que Doc affirme qu'elle le peut. Mais je voulais juste m'assurer, si c'est le cas. Il ne semble pas y avoir beaucoup d'informations sur Jackson là-bas, leur propre doc semble limité.
ObjectMapper code> peut être partagé, oui.
Je ne suis pas tout à fait sûr de savoir pourquoi vous oublieriez une garantie explicite par l'auteur (s) de la bibliothèque (je suppose que vous vous référez à wiki .fasterxml.com / jacksonfaq , "est le fil de l'objetMapper?"), mais oui, il est entièrement partageable tant que vous n'essayez pas de modifier les paramètres de configuration lors du partage.
vérifier et p> annotation p> Ceci ne fonctionnera que lorsque vous voulez toutes les instances d'une certain type pour ignorer l'identifiant sur la sérialisation. Si vous voulez vraiment la dynamique (AKA par Personnalisation de l'instance), vous devez probablement pirater vous-même la bibliothèque Jackson. P> P>
Avez-vous essayé d'utiliser JSON Vues ? Les vues permettent un mécanisme basé sur l'annotation pour définir différents profils. Si vous avez juste besoin d'une vue légèrement différente pour différents utilisateurs, cela pourrait fonctionner pour vous. P>
Oui, la vue JSON est la voie à suivre. P>
Si vous par exemple. Besoin de laisser le client à décider quels champs à maréchal, cet exemple pourrait aider:
Ce lien nécessite une authentification
Ce lien ne fonctionne plus, mais je suppose que le lien suivant sera un équivalent .. github.com/fasterxml/jackson-1/blob/master/src/sample/sample / ...