Banyak data dengan tanda kurung [] muncul di basis data proyek. Tes melaporkan bug. Setelah pemecahan masalah, itu disebabkan oleh menggunakan paket jar lib. JSON-LIB mengubah nilai nol menjadi [] selama proses mengonversi string XML ke format JSON. Sekarang saya akan meringkas secara singkat persamaan dan perbedaan antara dua paket XML ke JSON. Mungkin karena pertanyaan seperti itu relatif mendasar, meskipun seseorang mengajukan pertanyaan seperti itu secara online, tidak ada jawaban yang ditemukan. Untuk memfasilitasi pemrogram junior seperti saya untuk menemukan dan menyelesaikan masalah sesegera mungkin, saya menulis posting blog ini.
Sebagian besar paket JAR untuk XML ke JSON yang dapat ditemukan online adalah net.sf.json-lib. Paket ini lebih banyak digunakan dalam parsing JSON, tetapi kerugiannya adalah bahwa ia membutuhkan lebih banyak paket ketergantungan. Tapi di sini saya hanya akan berbicara tentang XML -nya ke JSON.
1.net.sf.json-lib ke json;
Json json = xmlserializer.read (xml);
Masalah dengan metode ini adalah bahwa ia akan mengonversi nilai nol menjadi []. Gunakan json.get (value) .getClass untuk mendapatkan jenis []. Anda dapat menemukan bahwa JSON-LIB mengenali nilai nol sebagai tipe JSONArray, bukan string, dan metode jsonarray tostring ditulis ulang sebagai [,,,,,]
Jika Anda masih ingin menggunakan metode ini, Anda dapat membuat modifikasi berikut. Saat menggunakan metode getstring () untuk mendapatkan nilai objek JSON yang dikonversi dari XML, pertama -tama tentukan apakah jenisnya adalah string dan kemudian dapatkan.
json.get (value) instanceof string? json.getString (nilai): ""
2. Org.json ke json:
org.json.jsonobject jsonobj = org.json.xml.toJsonObject (xml);
Nilai [] tidak akan dihasilkan, tetapi tag root akan dipertahankan (dokumen XML standar memiliki dan hanya satu tag root, apa yang disebut tag root adalah sepasang <tag root> </root tag> yang berisi semua tag lainnya), dan tag root umum tidak ada artinya untuk data, jadi jika Anda perlu melakukan pemrosesan), dan tag root umum tidak ada artinya untuk data, jadi jika Anda perlu melakukan pemrosesan)
jsonobj.get ("root");Ini kode uji:
paket com.pptv.ppvision.util; impor org.json.xml; impor net.sf.json.jsonobject; impor net.sf.json.xml.xmlserializer; kelas publik xml2jsontest {private static string xml = "<soot> <user> <name> weleless </name> <ap sex> </ sex> </user> </root>"; public static void main (string [] args) {testorgjson (); testxmlserializer (); } public static void testorgjson () {org.json.jsonObject jsonobj = xml.toJsonObject (xml); System.out.println ("org.json xml2json:"+jsonobj); org.json.jsonObject user = jsonobj.getjsonObject ("root"). getjsonobject ("user"); // org.json perlu menghapus root tag system.out.println ("nama pengguna:"+user.getstring ("name"))); System.out.println ("Gender:"+user.getString ("sex")); } public static void testXmlSerializer () {xmlserializer xmlserializer = xmlserializer baru (); JsonObject jsonObject = (jsonObject) xmlserializer.read (xml); System.out.println ("JSON-LIB XML2JSON Hasil:"+jsonObject); JSONObject user = jsonObject.getjsonObject ("user"); System.out.println ("Nama Pengguna:"+user.get ("name")); System.out.println ("Gender:"+(user.get ("sex") instance dari string? User.getString ("sex"): "")); }}Berikut dua metode untuk Anda
Salah satunya adalah menggunakan metode getString () untuk mendapatkan nilai objek JSON dikonversi dari XML, pertama -tama tentukan apakah jenisnya adalah string dan kemudian dapatkan.
Salah satunya adalah org.json
Anda dapat memilih metode mana yang akan digunakan sesuai dengan kebutuhan Anda