Какие есть хорошие инструменты для быстрого и простого преобразования 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 имеет несколько замечательных ресурсов.
Maven зависимость:
<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 здесь . Затем реализовать как:
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" } } ] }
Я загрузил проект, который вы можете напрямую открыть в Eclipse и запустить, вот и все 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, например Cache Apache.