Was sind einige gute Tools für die schnelle und einfache Konvertierung von XML in JSON in Java?
import net.sf.json.JSONObject;
oder import org.json.JSONObject;
. Auch welches Glas muss ich einschließen?
Was sind einige gute Tools für die schnelle und einfache Konvertierung von XML in JSON in Java?
import net.sf.json.JSONObject;
oder import org.json.JSONObject;
. Auch welches Glas muss ich einschließen?
Antworten:
JSON in Java verfügt über einige großartige Ressourcen.
Maven-Abhängigkeit:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
XML.java
ist die Klasse, die Sie suchen:
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());
}
}
}
Ausgabe ist:
{"test": {
"attrib": "moretest",
"content": "Turn this to JSON"
}}
import net.sf.json.JSONObject;
oder import org.json.JSONObject;
. Auch welches Glas muss ich einschließen?
<test attrib="moretest" content="foo">bar</test>
?
Um XML-Dateien in JSON zu konvertieren, müssen Sie die folgende Abhängigkeit berücksichtigen
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
und Sie können Jar aus dem Maven Repository hier herunterladen . Dann implementieren Sie als:
String soapmessageString = "<xml>yourStringURLorFILE</xml>";
JSONObject soapDatainJsonObject = XML.toJSONObject(soapmessageString);
System.out.println(soapDatainJsonObject);
Das einzige Problem mit JSON in Java besteht darin, dass Ihr XML, wenn es ein einzelnes untergeordnetes Element hat, aber ein Array ist, es in ein Objekt anstelle eines Arrays konvertiert. Dies kann zu Problemen führen, wenn Sie dynamisch immer von XML nach JSON konvertieren. Wenn Ihr Beispiel-XML nur ein Element enthält, geben Sie ein Objekt zurück. Wenn es jedoch 2+ enthält, geben Sie ein Array zurück, was bei Benutzern, die das verwenden, zu Analyseproblemen führen kann JSON.
Die XML2JSON- Klasse von Infoscoop bietet die Möglichkeit, Elemente, die Arrays sind, vor der Konvertierung zu kennzeichnen , sodass Arrays ordnungsgemäß zugeordnet werden können, selbst wenn das XML nur ein untergeordnetes Element enthält .
Hier ist ein Beispiel für die Verwendung (in einer etwas anderen Sprache, aber Sie können auch sehen, wie Arrays mithilfe der nodelist2json () -Methode des XML2JSON-Links verwendet werden).
<results><result><value>1</value></result></results>
, würde es erzeugen { "results" : { "result" : { "value" : "1" } } }
oder { "results" : [ { "result" : { "value" : "1" } } ] }
Ich habe das Projekt hochgeladen, das Sie direkt in Eclipse öffnen und ausführen können. Das ist alles https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA
Danke
Ich fand das schnell und einfach: Verwendet: org.json.XML
Klasse von 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());
}
Ich weiß nicht, was genau Ihr Problem ist, aber wenn Sie XML empfangen und JSON (oder etwas anderes) zurückgeben möchten, können Sie sich auch JAX-B ansehen. Dies ist ein Standard für das Marshalling / Unmarshalling von Java-POJOs in XML und / oder Json. Es gibt mehrere Bibliotheken, die JAX-B implementieren, beispielsweise Apaches CXF.