Quels sont les bons outils pour convertir rapidement et facilement du XML en JSON en Java?
import net.sf.json.JSONObject;
ou import org.json.JSONObject;
. Quel pot dois-je également inclure?
Quels sont les bons outils pour convertir rapidement et facilement du XML en JSON en Java?
import net.sf.json.JSONObject;
ou import org.json.JSONObject;
. Quel pot dois-je également inclure?
Réponses:
JSON en Java a d'excellentes ressources.
Dépendance Maven:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
XML.java
est la classe que vous recherchez:
import org.json.JSONObject;
import org.json.XML;
public class Main {
public static int PRETTY_PRINT_INDENT_FACTOR = 4;
public static String TEST_XML_STRING =
"<?xml version=\"1.0\" ?><test attrib=\"moretest\">Turn this to JSON</test>";
public static void main(String[] args) {
try {
JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING);
String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
System.out.println(jsonPrettyPrintString);
} catch (JSONException je) {
System.out.println(je.toString());
}
}
}
La sortie est:
{"test": {
"attrib": "moretest",
"content": "Turn this to JSON"
}}
import net.sf.json.JSONObject;
ou import 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
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
et vous pouvez télécharger Jar à partir du référentiel Maven ici . Puis implémentez comme:
String soapmessageString = "<xml>yourStringURLorFILE</xml>";
JSONObject soapDatainJsonObject = XML.toJSONObject(soapmessageString);
System.out.println(soapDatainJsonObject);
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).
<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
J'ai trouvé cela de la manière rapide et facile: utilisé: org.json.XML
classe de java-json.jar
if (statusCode == 200 && inputStream != null) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = bufferedReader.readLine()) != null) {
responseStrBuilder.append(inputStr);
}
jsonObject = XML.toJSONObject(responseStrBuilder.toString());
}
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.