La conversion de JSON en XML et vice versa à l'aide de Jackson API et Annotations JAXB
Je suis en train d'écrire un code qui peut prendre le format XML ou JSON d'entrée et de sortie JSON ou XML, respectivement. I. e, si je donne XML qu'il doit donner en retour JSON, et si je donne JSON elle devrait donner XML de sortie.
On me dit que c'est possible à l'aide de Jackson et d'API JAXB Annotations. Quelqu'un peut-il m'aider à sortir avec cette?
OriginalL'auteur R Syed | 2013-02-06
Vous devez vous connecter pour publier un commentaire.
Remarque: je suis le EclipseLink JAXB (MOXy) plomb et un membre de la JAXB (JSR-222) groupe d'experts.
Ci-dessous est un exemple de comment vous pouvez utiliser MOXy JSON de liaison à l'appui de ce cas d'utilisation.
JAVA MODÈLE
Ci-dessous est un exemple de modèle de domaine annoté avec JAXB métadonnées. Les mêmes métadonnées sera utilisée à la fois l'objet de XML et de l'objet-à-JSON conversions.
Client
PhoneNumber
D'ENTRÉE XML
Ci-dessous est l'entrée XML que nous allons utiliser. Notez comment les
xsi:nil
attribut est utilisé sur lalastName
élément pour indiquer unnull
valeur. Notons également que lephoneNumbers
élément a untype
attribut.LE CODE DE DÉMONSTRATION
jaxb.propriétés
Pour spécifier MOXy que votre JAXB fournisseur, vous devez inclure un fichier appelé
jaxb.properties
dans le même package que votre modèle de domaine avec l'entrée suivante (voir: http://blog.bdoughan.com/2011/05/specifying-eclipselink-moxy-as-your.html):Démo
Suivants le code de démonstration vous permet de convertir le XML pour le modèle de domaine et puis retour JSON.
SORTIE JSON
Notez comment le
null
de la valeur pour l'lastName
touche est représentée comme bon JSON. Notons également que letype
clé ne contient pas d'indicateur correspondant à un attribut XML dans la représentation XML.OriginalL'auteur bdoughan
Sûr, mais ne pense pas à ce que la conversion entre les formats XML et JSON -- c'est à peu près la mauvaise chose à faire, causant des problèmes de compatibilité -- mais que de la conversion des Objets Java (Pojo)/à partir de JSON et XML. Vous pouvez utiliser un ou deux outils pour cela: une combinaison courante est d'utiliser Jackson pour JSON, et JAXB pour XML, afin d'utiliser leurs points forts respectifs.
Il est également possible d'utiliser un seul outil; Blaise a expliqué comment JAXB implémentations peuvent aider.
De même, vous pouvez utiliser Jackson pour les deux: pour la partie XML, vous devez utiliser Jackson module XML.
Avec Jackson, vous pouvez utiliser Jackson propres annotations (de préférence), ou des annotations JAXB pour la compatibilité; les deux travaillent pour XML et JSON cas d'utilisation.
Utilisation du module XML avec Jackson ne diffère pas beaucoup de défaut JSON traitement, à l'exception que vous aurez besoin
XmlMapper
sous-classe deObjectMapper
.Si l'utilisation de ce à partir de JAX-RS (comme Jersey), vous pouvez utiliser Jackson JAX-RS XML fournisseur.
OriginalL'auteur StaxMan