เครื่องมือที่ดีสำหรับการแปลง 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>
และคุณสามารถดาวน์โหลดโหลจาก 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
class จาก 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 ได้เช่นกัน นี่เป็นมาตรฐานสำหรับ marshalling / unmarshalling Java POJO ของ XML และ / หรือ Json มีหลายไลบรารีที่ใช้ JAX-B ตัวอย่างเช่น CXF ของ Apache