ظهرت العديد من البيانات ذات الأقواس [] في قاعدة بيانات المشروع. أبلغ الاختبار عن خطأ. بعد استكشاف الأخطاء وإصلاحها ، كان سبب ذلك باستخدام حزمة JSON-LIB JAR. يحول JSON-LIB القيم الخالية إلى [] أثناء عملية تحويل سلاسل XML إلى تنسيق JSON. الآن سألخص بإيجاز أوجه التشابه والاختلاف بين حزم XML إلى JSON. ربما لأن مثل هذه الأسئلة أساسية نسبيًا ، على الرغم من أن شخصًا ما طرح مثل هذه الأسئلة عبر الإنترنت ، لم يتم العثور على إجابات. من أجل تسهيل المبرمجين المبتدئين مثلي لاكتشاف المشكلات وحلها في أقرب وقت ممكن ، كتبت منشور المدونة هذا.
معظم حزم الجرة لـ XML إلى JSON التي يمكن العثور عليها عبر الإنترنت هي net.sf.json-lib. يتم استخدام هذه الحزمة أكثر في تحليل JSON ، ولكن العيب هو أنها تتطلب المزيد من حزم التبعية. ولكن هنا سوف أتحدث فقط عن XML له إلى JSON.
1.NET.SF.JSON-LIB إلى JSON ؛
json json = xmlserializer.read (xml) ؛
المشكلة في هذه الطريقة هي أنها ستحول القيمة الفارغة إلى []. استخدم json.get (القيمة) .getClass للحصول على نوع []. يمكنك أن تجد أن JSON-LIB يتعرف على القيمة الفارغة كنوع JSONARRAY بدلاً من سلسلة ، ويتم إعادة كتابة طريقة tostring في JSONARRAY باسم [،،،]]
إذا كنت لا تزال ترغب في استخدام هذه الطريقة ، فيمكنك إجراء التعديلات التالية. عند استخدام طريقة getString () للحصول على قيمة كائن JSON التي تم تحويلها من XML ، حدد أولاً ما إذا كان النوع عبارة عن سلسلة ثم الحصول عليها.
json.get (القيمة) extryof string؟ json.getString (القيمة): ""
2. org.json إلى JSON:
org.json.jsonobject jsonobj = org.json.xml.tojsonoBject (xml) ؛
لن يتم إنشاء القيمة [] ، ولكن سيتم الاحتفاظ بعلامة الجذر (تحتوي مستند XML القياسي على علامة جذر واحدة فقط ، وهي علامة الجذر المزعومة هي زوج من علامات <root> </root التي تحتوي على جميع العلامات الأخرى) ، وعلامة الجذر العامة لا معنى لها للبيانات ، لذلك كنت بحاجة إلى القيام بالمعالجة
jsonobj.get ("الجذر") ؛هنا هو رمز الاختبار:
حزمة com.pptv.ppvision.util ؛ استيراد org.json.xml ؛ استيراد net.sf.json.jsonobject ؛ استيراد net.sf.json.xml.xmlserializer ؛ الفئة العامة xml2jsontest {private static string xml = "<rout> <Ser> <same> wise </mame> <expens> </sex> </serve> </rout>" ؛ public static void main (string [] args) {testorgjson () ؛ testxmlserializer () ؛ ) System.out.println ("org.json xml2json:"+jsonobj) ؛ org.json.jsonobject user = jsonobj.getjsonobject ("root"). getJsonObject ("user") ؛ // org.json بحاجة إلى إزالة نظام الجذر. System.out.println ("الجنس:"+user.getString ("sex")) ؛ ) jsonobject jsonobject = (jsonobject) xmlserializer.read (xml) ؛ System.out.println ("JSON-LIB XML2JSON النتيجة:"+jsonobject) ؛ jsonobject user = jsonobject.getJsonObject ("user") ؛ System.out.println ("اسم المستخدم:"+user.get ("name")) ؛ System.out.println ("الجنس:"+(user.get ("sex") مثيل string؟ user.getString ("sex"): "")) ؛ }}فيما يلي طريقتان لك
أحدهما هو استخدام طريقة getString () لتحويل قيمة كائن JSON من XML ، أولاً حدد ما إذا كان النوع سلسلة ثم الحصول عليه.
واحد هو org.json
يمكنك اختيار الطريقة التي يجب استخدامها وفقًا لاحتياجاتك