Вопрос-ответ

Quickest way to convert XML to JSON in Java [closed]

Самый быстрый способ преобразовать XML в JSON в Java

Какие есть хорошие инструменты для быстрого и простого преобразования XML в JSON в Java?

Переведено автоматически
Ответ 1

JSON в Java обладает некоторыми отличными ресурсами.

Зависимость от Maven:

<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>

XML.java это тот класс, который вы ищете:

import org.json.JSONObject;
import org.json.XML;
import org.json.JSONException;

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"
}}
Ответ 2

Чтобы преобразовать XML-файл в JSON, включите следующую зависимость

<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>

и вы можете загрузить Jar из репозитория Maven здесь.
Затем реализовать как:

String soapmessageString = "<xml>yourStringURLorFILE</xml>";
JSONObject soapDatainJsonObject = XML.toJSONObject(soapmessageString);
System.out.println(soapDatainJsonObject);
Ответ 3

Единственная проблема с JSON в Java заключается в том, что если ваш XML имеет единственный дочерний элемент, но является массивом, он преобразует его в объект, а не в массив. Это может вызвать проблемы, если вы всегда динамически конвертируете из XML в JSON, где, если в вашем примере XML есть только один элемент, вы возвращаете объект, но если у него 2 +, вы возвращаете массив, что может вызвать проблемы с синтаксическим анализом у людей, использующих JSON.

В классе Infoscoop XML2JSON есть способ помечать элементы, являющиеся массивами, перед выполнением преобразования, чтобы массивы могли быть правильно сопоставлены, даже если в XML есть только один дочерний элемент.

Вот пример его использования (на немного другом языке, но вы также можете увидеть, как используются массивы, из метода nodelist2json() ссылки XML2JSON).

Ответ 4

Я нашел этот быстрый и простой способ: Используется: 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());
}
java xml json