Je ne peux pas utiliser XML directement en raison d'une exigence de la spécification, mais je suis d'accord avec vous. Merci!
BeachRunnerFred
@BeachRunnerJoe: De quelle importation ai-je besoin pour écrire? import net.sf.json.JSONObject;ou import org.json.JSONObject;. Quel pot dois-je également inclure?
Attention: le package json.org.XML n'existe pas sous Android!
Ludovic Landry
2
@danieltalsky: De quelle importation ai-je besoin pour écrire? import net.sf.json.JSONObject;ou import org.json.JSONObject;. Quel pot dois-je également inclure?
Et si vous avez un <test attrib="moretest" content="foo">bar</test>?
wchargin
1
REMARQUE: XML.toJSONObject () de org.json convertit également correctement les listes XML en tableaux json (contrairement au XmlMapper de jackson qui, par défaut, avale silencieusement).
Agoston Horvath
58
Pour convertir un fichier XML en JSON, incluez la dépendance suivante
utilisez la version de json mentionnée dans l'article si vous êtes sur java 7 car la dernière version génère des erreurs étranges.
urug
Si vous avez un fichier dtd valide pour l'extrait de code xml, vous pouvez facilement convertir xml en json et json en xml à l'aide du fichier jar de lien open source eclipse. Un exemple détaillé de projet JAVA peut être trouvé ici: cubicrace.com/2015/06/How-to-convert-XML-to-JSON-format.html
Piyush Chordia
J'ai dû copier l'intégralité du package JSON dans mon projet et renommé le package. L'ajout à gradle donne un avertissement de package en double d'Android pendant la construction.
codelearner
28
Le seul problème avec JSON en Java est que si votre XML a un seul enfant, mais est un tableau, il le convertira en objet au lieu d'un tableau. Cela peut poser des problèmes si vous effectuez toujours une conversion dynamique de XML en JSON, où si votre exemple de XML n'a qu'un seul élément, vous retournez un objet, mais s'il en a 2+, vous retournez un tableau, ce qui peut entraîner des problèmes d'analyse pour les personnes utilisant le JSON.
La classe XML2JSON d' Infoscoop a un moyen de baliser les éléments qui sont des tableaux avant d'effectuer la conversion, afin que les tableaux puissent être correctement mappés, même s'il n'y a qu'un seul enfant dans le XML.
Voici un exemple d'utilisation (dans un langage légèrement différent, mais vous pouvez également voir comment les tableaux sont utilisés à partir de la méthode nodelist2json () du lien XML2JSON).
nous utilisons une bibliothèque "xml-to-json" en python et c'est un problème sémantique. Ce que nous faisons pour résoudre ce problème de "tableau ou objet", c'est écrire une méthode "tryConvertToArray ()", qui retourne un tableau avec un seul objet. Ainsi, vous pouvez toujours faire confiance à votre valeur pour être un tableau
kommradHomer
Je ne vois pas clairement comment cela résout le problème. Faites-vous simplement tout un tableau au lieu d'un objet alors? Par exemple, si j'ai le XML <results><result><value>1</value></result></results>, cela générerait-il { "results" : { "result" : { "value" : "1" } } } ou { "results" : [ { "result" : { "value" : "1" } } ] }
Marcus
Il y a quelque chose dont nous nous attendons à ce que ce soit un tableau. Le problème survient lorsque ce tableau n'a qu'un seul élément, ce qui en fait un objet pour le convertisseur xml-to-json. Donc, comme nous nous attendons à ce que ce soit un tableau même pour un seul élément, nous le vérifions et le convertissons en un tableau, en nous assurant que nous avons un tableau où nous attendons un tableau.
kommradHomer
Mais comment vous attendez-vous à ce qu'un élément spécifique soit un tableau? XML2JSON balise les éléments. Il n'est pas clair comment s'attendre à ce que ce soit un tableau sans le baliser, sinon vous ne le sauriez jamais avec un seul élément 'tableau'.
Marcus
Par exemple, il existe un élément appelé «numéros de téléphone». Et il y a un ou plusieurs éléments "phonenumber" dans l'élément "phonenumbers". Ainsi, quand il n'y a qu'un seul élément "phonenumber" dans "phonenumbers", xml2json crée un objet phonenumber, mais je crée un tableau de phonenumber et y mets l'objet phonenumber.
Je ne sais pas quel est votre problème exact, mais si vous recevez du XML et que vous souhaitez renvoyer JSON (ou quelque chose), vous pouvez également consulter JAX-B. Il s'agit d'un standard pour le marshalling / unmarshalling Java POJO en XML et / ou Json. Il existe plusieurs bibliothèques qui implémentent JAX-B, par exemple le CXF d'Apache.
import net.sf.json.JSONObject;
ouimport org.json.JSONObject;
. Quel pot dois-je également inclure?Réponses:
JSON en Java a d'excellentes ressources.
Dépendance Maven:
XML.java
est la classe que vous recherchez:La sortie est:
la source
import net.sf.json.JSONObject;
ouimport org.json.JSONObject;
. Quel pot dois-je également inclure?<test attrib="moretest" content="foo">bar</test>
?Pour convertir un fichier XML en JSON, incluez la dépendance suivante
et vous pouvez télécharger Jar à partir du référentiel Maven ici . Puis implémentez comme:
la source
Le seul problème avec JSON en Java est que si votre XML a un seul enfant, mais est un tableau, il le convertira en objet au lieu d'un tableau. Cela peut poser des problèmes si vous effectuez toujours une conversion dynamique de XML en JSON, où si votre exemple de XML n'a qu'un seul élément, vous retournez un objet, mais s'il en a 2+, vous retournez un tableau, ce qui peut entraîner des problèmes d'analyse pour les personnes utilisant le JSON.
La classe XML2JSON d' Infoscoop a un moyen de baliser les éléments qui sont des tableaux avant d'effectuer la conversion, afin que les tableaux puissent être correctement mappés, même s'il n'y a qu'un seul enfant dans le XML.
Voici un exemple d'utilisation (dans un langage légèrement différent, mais vous pouvez également voir comment les tableaux sont utilisés à partir de la méthode nodelist2json () du lien XML2JSON).
la source
<results><result><value>1</value></result></results>
, cela générerait-il{ "results" : { "result" : { "value" : "1" } } }
ou{ "results" : [ { "result" : { "value" : "1" } } ] }
J'ai téléchargé le projet que vous pouvez ouvrir directement dans eclipse et exécuter c'est tout https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA
Merci
la source
J'ai trouvé cela de la manière rapide et facile: utilisé:
org.json.XML
classe de java-json.jarla source
Je ne sais pas quel est votre problème exact, mais si vous recevez du XML et que vous souhaitez renvoyer JSON (ou quelque chose), vous pouvez également consulter JAX-B. Il s'agit d'un standard pour le marshalling / unmarshalling Java POJO en XML et / ou Json. Il existe plusieurs bibliothèques qui implémentent JAX-B, par exemple le CXF d'Apache.
la source