Một số công cụ tốt để chuyển đổi XML sang JSON nhanh chóng và dễ dàng là gì?
import net.sf.json.JSONObject;
hoặc import org.json.JSONObject;
. Ngoài ra tôi cần bao gồm bình nào?
Một số công cụ tốt để chuyển đổi XML sang JSON nhanh chóng và dễ dàng là gì?
import net.sf.json.JSONObject;
hoặc import org.json.JSONObject;
. Ngoài ra tôi cần bao gồm bình nào?
Câu trả lời:
JSON trong Java có một số tài nguyên tuyệt vời.
Phụ thuộc Maven:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
XML.java
là lớp bạn đang tìm kiếm:
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());
}
}
}
Đầu ra là:
{"test": {
"attrib": "moretest",
"content": "Turn this to JSON"
}}
import net.sf.json.JSONObject;
hoặc import org.json.JSONObject;
. Ngoài ra tôi cần bao gồm bình nào?
<test attrib="moretest" content="foo">bar</test>
?
Để chuyển đổi tệp XML thành JSON bao gồm các phụ thuộc sau
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
và bạn có thể Tải xuống Jar từ Kho lưu trữ Maven tại đây . Sau đó thực hiện như:
String soapmessageString = "<xml>yourStringURLorFILE</xml>";
JSONObject soapDatainJsonObject = XML.toJSONObject(soapmessageString);
System.out.println(soapDatainJsonObject);
Vấn đề duy nhất với JSON trong Java là nếu XML của bạn có một con duy nhất, nhưng là một mảng, nó sẽ chuyển đổi nó thành một đối tượng thay vì một mảng. Điều này có thể gây ra sự cố nếu bạn luôn tự động chuyển đổi từ XML sang JSON, trong đó nếu ví dụ XML của bạn chỉ có một phần tử, bạn trả về một đối tượng, nhưng nếu nó có 2+, bạn trả về một mảng, có thể gây ra sự cố phân tích cú pháp cho những người sử dụng JSON.
Lớp XML2JSON của Infoscoop có cách gắn thẻ các phần tử là mảng trước khi thực hiện chuyển đổi, để các mảng có thể được ánh xạ chính xác, ngay cả khi chỉ có một con trong XML.
Dưới đây là một ví dụ về việc sử dụng nó (trong một ngôn ngữ hơi khác, nhưng bạn cũng có thể thấy cách các mảng được sử dụng từ phương thức gật đầu2json () của liên kết XML2JSON).
<results><result><value>1</value></result></results>
, nó sẽ tạo { "results" : { "result" : { "value" : "1" } } }
hoặc { "results" : [ { "result" : { "value" : "1" } } ] }
Tôi đã tải lên dự án mà bạn có thể trực tiếp mở trong nhật thực và chạy tất cả https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA
Cảm ơn bạn
Tôi thấy đây là cách nhanh chóng và dễ dàng: Được sử dụng: org.json.XML
lớp từ 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());
}
Tôi không biết vấn đề chính xác của bạn là gì, nhưng nếu bạn đang nhận XML và muốn trả lại JSON (hoặc một cái gì đó), bạn cũng có thể xem JAX-B. Đây là một tiêu chuẩn cho việc sắp xếp / sắp xếp các Java POJO thành XML và / hoặc Json. Có nhiều thư viện triển khai JAX-B, ví dụ CXF của Apache.