ข้อมูลจำนวนมากที่มีวงเล็บ [] ปรากฏในฐานข้อมูลโครงการ การทดสอบรายงานข้อผิดพลาด หลังจากการแก้ไขปัญหามันเกิดจากการใช้แพ็คเกจ JSON-LIB JAR JSON-LIB แปลงค่า null เป็น [] ในระหว่างกระบวนการแปลงสตริง XML เป็นรูปแบบ JSON ตอนนี้ฉันจะสรุปความเหมือนและความแตกต่างระหว่างสองแพ็คเกจ XML ถึง JSON สองแพ็คเกจ อาจเป็นเพราะคำถามดังกล่าวค่อนข้างพื้นฐานแม้ว่าจะมีคนถามคำถามออนไลน์ แต่ไม่พบคำตอบ เพื่ออำนวยความสะดวกให้กับโปรแกรมเมอร์จูเนียร์อย่างฉันเพื่อค้นหาและแก้ปัญหาโดยเร็วที่สุดฉันเขียนโพสต์บล็อกนี้
แพ็คเกจ JAR ส่วนใหญ่สำหรับ XML ถึง JSON ที่สามารถพบได้ทางออนไลน์คือ net.sf.json-lib แพ็คเกจนี้ใช้มากขึ้นในการแยกวิเคราะห์ JSON แต่ข้อเสียคือต้องใช้แพ็คเกจการพึ่งพามากขึ้น แต่ที่นี่ฉันจะพูดถึง XML ของเขากับ JSON เท่านั้น
1.net.sf.json-lib ถึง JSON;
JSON JSON = XMLSerializer.read (XML);
ปัญหาเกี่ยวกับวิธีนี้คือมันจะแปลงค่าว่างเป็น [] ใช้ json.get (value) .getClass เพื่อรับประเภทของ [] คุณสามารถพบว่า JSON-LIB รับรู้ค่า NULL เป็นประเภท JSONARRAY แทนสตริงและวิธีการ TOSTRING ของ JSONARRAY ถูกเขียนใหม่เป็น [,,,,]
หากคุณยังต้องการใช้วิธีนี้คุณสามารถทำการแก้ไขต่อไปนี้ เมื่อใช้วิธี GetString () เพื่อรับค่าวัตถุ JSON ที่แปลงจาก XML ก่อนอื่นให้พิจารณาว่าประเภทเป็นสตริงแล้วรับ
json.get (ค่า) อินสแตนซ์ของสตริง? json.getString (ค่า): ""
2. org.json ถึง JSON:
org.json.jsonobject jsonobj = org.json.xml.tojsonobject (xml);
ค่า [] จะไม่ถูกสร้างขึ้น แต่แท็กรูทจะถูกเก็บไว้ (เอกสาร XML มาตรฐานมีและแท็กรูทเดียวเท่านั้นแท็กรูทที่เรียกว่าเป็นคู่ของ <แท็กรูท> </root แท็ก> ที่มีแท็กอื่น ๆ ทั้งหมด) และแท็กรากทั่วไปไม่มีความหมายกับข้อมูลดังนั้นหากคุณจำเป็นต้องทำการประมวลผล
jsonobj.get ("รูท");นี่คือรหัสทดสอบ:
แพ็คเกจ com.pptv.ppvision.util; นำเข้า org.json.xml; นำเข้า net.sf.json.jsonobject; นำเข้า net.sf.json.xml.xmlserializer; คลาสสาธารณะ XML2JSontest {สตริงคงที่ส่วนตัว XML = "<root> <ผู้ใช้> <name> Weless </name> <ex> </ex> </user> </root>"; โมฆะคงที่สาธารณะหลัก (สตริง [] args) {testorgjson (); testxmlserializer (); } โมฆะสาธารณะคงที่ testorgjson () {org.json.jsonObject jsonobj = xml.tojsonObject (xml); System.out.println ("org.json xml2json:"+jsonobj); org.json.jsonObject ผู้ใช้ = jsonobj.getjsonObject ("root"). getJsonObject ("ผู้ใช้"); // org.json จำเป็นต้องลบรูทแท็ก System.out.println ("ชื่อผู้ใช้:"+user.getString ("ชื่อ")); System.out.println ("เพศ:"+user.getString ("เพศ")); } โมฆะสาธารณะคงที่ testxMlSerializer () {XMLSerializer XMLSerializer = New XMLSerializer (); jsonObject jsonObject = (jsonObject) xmlserializer.read (xml); System.out.println ("JSON-LIB XML2JSON ผลลัพธ์:"+JSONObject); ผู้ใช้ jsonObject = jsonObject.getjsonObject ("ผู้ใช้"); System.out.println ("ชื่อผู้ใช้:"+user.get ("ชื่อ")); System.out.println ("เพศ:"+(user.get ("เพศ") อินสแตนซ์ของสตริง? user.getString ("เพศ"): ""); -นี่คือสองวิธีสำหรับคุณ
หนึ่งคือการใช้วิธี getString () เพื่อรับค่าวัตถุ JSON ที่แปลงจาก XML ก่อนอื่นให้พิจารณาว่าประเภทเป็นสตริงแล้วรับ
หนึ่งคือ org.json
คุณสามารถเลือกวิธีการใช้ตามความต้องการของคุณ