Jakie są dobre narzędzia do szybkiego i łatwego konwertowania XML do JSON w Javie?
import net.sf.json.JSONObject;
lub import org.json.JSONObject;
. Który słoik muszę dołączyć?
Jakie są dobre narzędzia do szybkiego i łatwego konwertowania XML do JSON w Javie?
import net.sf.json.JSONObject;
lub import org.json.JSONObject;
. Który słoik muszę dołączyć?
Odpowiedzi:
JSON w Javie ma świetne zasoby.
Zależność Mavena:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
XML.java
to klasa, której szukasz:
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());
}
}
}
Wynik to:
{"test": {
"attrib": "moretest",
"content": "Turn this to JSON"
}}
import net.sf.json.JSONObject;
lub import org.json.JSONObject;
. Który słoik muszę dołączyć?
<test attrib="moretest" content="foo">bar</test>
?
Aby przekonwertować plik XML na format JSON, należy uwzględnić następującą zależność
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
i możesz pobrać Jar z repozytorium Maven tutaj . Następnie zaimplementuj jako:
String soapmessageString = "<xml>yourStringURLorFILE</xml>";
JSONObject soapDatainJsonObject = XML.toJSONObject(soapmessageString);
System.out.println(soapDatainJsonObject);
Jedyny problem z JSON w Javie polega na tym, że jeśli twój XML ma jedno dziecko, ale jest tablicą, przekonwertuje go na obiekt zamiast tablicy. Może to powodować problemy, jeśli zawsze dynamicznie konwertujesz z XML do JSON, gdzie jeśli przykładowy XML ma tylko jeden element, zwracasz obiekt, ale jeśli ma 2+, zwracasz tablicę, co może powodować problemy z analizowaniem dla osób używających funkcji JSON.
Klasa XML2JSON firmy Infoscoop umożliwia oznaczanie elementów, które są tablicami przed wykonaniem konwersji, dzięki czemu tablice mogą być poprawnie odwzorowane, nawet jeśli w XML jest tylko jedno dziecko.
Oto przykład jego użycia (w nieco innym języku, ale możesz również zobaczyć, jak używane są tablice z metody nodelist2json () linku XML2JSON).
<results><result><value>1</value></result></results>
, czy wygeneruje { "results" : { "result" : { "value" : "1" } } }
lub { "results" : [ { "result" : { "value" : "1" } } ] }
Wgrałem projekt, który możesz bezpośrednio otworzyć w eclipse i uruchomić to wszystko https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA
Dziękuję Ci
Znalazłem to w szybki i łatwy sposób: Używany: org.json.XML
klasa z 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());
}
Nie wiem, jaki jest twój dokładny problem, ale jeśli otrzymujesz XML i chcesz zwrócić JSON (lub coś takiego), możesz również spojrzeć na JAX-B. Jest to standard krosowania / cofania kodu POJO Java do XML i / lub Json. Istnieje wiele bibliotek, które implementują JAX-B, na przykład CXF Apache.