Які хороші інструменти для швидкого та простого перетворення XML в JSON на Java?
import net.sf.json.JSONObject;
або import org.json.JSONObject;
. Також яку банку потрібно включити?
Які хороші інструменти для швидкого та простого перетворення XML в JSON на Java?
import net.sf.json.JSONObject;
або import org.json.JSONObject;
. Також яку банку потрібно включити?
Відповіді:
JSON на Java має чудові ресурси.
Залежна залежність:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
XML.java
це клас, який ви шукаєте:
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());
}
}
}
Вихід:
{"test": {
"attrib": "moretest",
"content": "Turn this to JSON"
}}
import net.sf.json.JSONObject;
або import org.json.JSONObject;
. Також яку банку потрібно включити?
<test attrib="moretest" content="foo">bar</test>
?
Для перетворення XML-файлу в JSON включайте наступну залежність
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
і ви можете завантажити Jar з Maven Repository тут . Потім реалізуйте як:
String soapmessageString = "<xml>yourStringURLorFILE</xml>";
JSONObject soapDatainJsonObject = XML.toJSONObject(soapmessageString);
System.out.println(soapDatainJsonObject);
Єдина проблема з JSON в Java полягає в тому, що якщо у вашому XML є одна дочірка, але це масив, він перетворить його в об'єкт замість масиву. Це може спричинити проблеми, якщо ви динамічно завжди перетворюєте з XML в JSON, і якщо у вашому прикладі XML є лише один елемент, ви повертаєте об'єкт, але якщо він має 2+, ви повертаєте масив, що може спричинити проблеми розбору людей, які використовують JSON.
Клас XML2JSON Infoscoop має спосіб тегування елементів, які є масивами перед перетворенням, щоб масиви можна було правильно відобразити, навіть якщо в XML є лише одна дитина.
Ось приклад його використання (трохи іншою мовою, але ви також можете бачити, як масиви використовуються методом nodelist2json () посилання XML2JSON).
<results><result><value>1</value></result></results>
, він би генерував { "results" : { "result" : { "value" : "1" } } }
або { "results" : [ { "result" : { "value" : "1" } } ] }
Я завантажив проект, який ви можете безпосередньо відкрити в затемненні і запустити це все https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA
Спасибі
Я знайшов це швидким і простим способом: Б / у: org.json.XML
клас від 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());
}
Я не знаю, у чому полягає ваша точна проблема, але якщо ви отримуєте XML і хочете повернути JSON (або щось таке), ви також можете подивитися на JAX-B. Це стандарт для маршалування / зняття з продажу Java POJO для XML та / або Json. Існує кілька бібліотек, які реалізують JAX-B, наприклад, CXF Apache.