مقدمة
JSON هو اختصار تدوين كائن JavaScript ، وهو شكل خفيف الوزن من تبادل البيانات ، وهو بديل لـ XML ، وهو أصغر وأسرع وأسهل في التحليل من XML. نظرًا لأن JSON يستخدم بناء جملة JavaScript عند وصف الكائنات ، فهو مستقل للغة والمنصة ، وتم تطوير العديد من محلات JSON ومكتبات الفصل على مر السنين.
JSON لديه النماذج التالية:
الكائن عبارة عن مجموعة غير مرتبة من "الاسم/القيمة" "أزواج". يبدأ كائن بـ "{" (فتح قوس) وينتهي بـ "}" (قوس إغلاق). كل "اسم" يتبعه ":" (القولون) ؛ يتم فصل "الاسم/القيمة" "زوج" ، "، (فاصلة).
قائمة مرتبة من القيم. في معظم اللغات ، يتم تنفيذها كصفيف ، متجه ، قائمة ، تسلسل.
هذه هياكل البيانات الشائعة. حاليًا ، تدعمهم معظم لغات البرمجة بشكل ما. هذا يجعل من الممكن تبادل البيانات بنفس التنسيق بين لغات البرمجة المختلفة.
للحصول على بيانات من عناوين URL الخاصة بالخوادم الأخرى ، نقوم عمومًا بنقل بيانات JSON. على سبيل المثال ، يحتاج الخادم B إلى الحصول على معلومات الترحيل من عناوين URL الخاصة بالخادم A. بعد الحصول على أحرف JSON ، إذا كانت مريحة وسريعة التشغيل ، فيجب تحويلها إلى كائن Java الخاص بك.
لقد جربت هنا ثلاثة جهة خارجية JSON لتحويل ، Google GSON. يبدو أن هذا واحد غير قادر على التحويل بنجاح. يستمر في الإبلاغ عن خطأ في تنسيق JSON ، لكن التحقق كان صحيحًا وفشل المحاولة. النوع الثاني هو net.sf.json ، مما يعني أنه لا يتم الإبلاغ عن أي أخطاء ، ولكن قيمة الكائن فارغة دائمًا. فقط JSON-Simple يمكنه تحويل الكائنات بنجاح
Parse Json
بادئ ذي بدء ، نحن بحاجة إلى تحليل JSON لمعرفة ما إذا كان JSON هو تنسيق JSON قياسي. يمكننا عرض JSON في العديد من التنسيقات عبر الإنترنت على الإنترنت. بشكل عام ، نغير الحساء وليس الدواء عند تحليل JSON ككائن.
الأول: أحتاج إلى معرفة هيكل JSON. هنا سأبدأ الخادم A وأحصل على سلسلة من بيانات JSON من عنوان URL الخاص به.
يمكن أن يرى إلقاء بيانات COPY JSON في أداة التنسيق بوضوح الهيكل:
{"eventlist": [{"id": 1030 ، "eventid": "1508779115818499700" ، "CreateTime: } ، {"id": 1029 ، "eventid": "1508382907251660498" ، "CreateTime: 1508382906000 ،" Endtime ": 1508383020000 ،" eventContent: "ahhhh } ، {"id": 1028 ، "eventID": "1508308708414580378" ، "CreateTime": 1508308721000 ، "Endtime": 1508309040000 ، "eventcontent": "30" ، "ID": 1027 ، "eventID": "1508308463330664814" ، "CreateTime": 1508308480000 ، "Endtime": 1508308560000 ، "EventContent": "28" ، "OpenID": "O4EWZ06XHW6 1026 ، "EventId": "15083084630171714213" ، "CreateTime": 1508308479000 ، "Endtime": 1508308560000 ، "EventContent": "27" ، "OpenID": "O4EWZ06XHW6MC2GMZMYVDETX "5" ، "Ishaspage": "1"}ثانياً: إنشاء فئات كيان مقابلة بناءً على الهيكل
استيراد com.yhn.consumer.entity.event ؛ استيراد lombok.data ؛ استيراد org.json.simple.jsonoBject ؛ استيراد java.io.serializable ؛ استيراد java.util.list ؛ datapublic classlistvo الأدوات serializable صفحة سلسلة خاصة ؛ حجم السلسلة الخاص سلسلة إسماءات السلسلة الخاصة. Public EventVo (JSonObject Object) {// constructor طريقة يعين قيمة إلى كائن eventlist = (list <event>) object.get ("eventlist") ؛ page = (string) object.get ("page") ؛ size = (string) object.get ("size") ؛ ishaspage = (سلسلة) object.get ("ishaspage") ؛ }} نظرًا لأنه هيكل مضمن ، فإن ما يلي هو فئة الأحداث في private List<Event> eventList ؛
استيراد lombok.data ؛ استيراد org.hibernate.annotations.dynamicupdate ؛ استيراد javax.persistence.entity ؛ استيراد javax.persistence.generatedvalue تنفذ مسلسل {// هذا هو الحدث في القائمة في eventVo @generatedvalue integer id ؛ // فرز وظيفة السلسلة الخاصة ؛ // معرف الحدث الخاص بالتاريخ الخاص ؛ // وقت الخلق تاريخ نهاية الوقت ؛ // تحديث وقت السلسلة الخاصة. // تذكير المحتوى الخاص بالحدث سلسلة OpenId ؛ // معرف المستخدم} فئة الاختبار
بعد ذلك ، يتم كتابة الهيكل أيضًا. ستكتب اختبار وحدة على الخادم B لمعرفة ما إذا كان يمكن تعيين القيمة بنجاح.
Test public void clientDemo () يلقي استثناء {stringBuilder json = new StringBuilder () ؛ url urlobject = url جديد ("http://127.0.0.1/meetingsign/test/server؟openid=O4ewz06xzHw6Mc2gmzMyVdetx1zk&page=2&size=5") ؛ // حدد url httpurlConnection UC = (httpurlConnection) urlObject .OpenConnection () ؛ // تمكين الاتصال bufferreader في = جديد bufferedReader (new inputStreamReader (uc.getInputStream () ، "utf-8")) ؛ سلسلة InputLine = NULL ؛ بينما ((inputLine = in.ReadLine ())! = null) {json.append (inputLine) ؛ // split json} in.close () ؛ UC.Disconnect () ؛ System.out.println (JSON) ؛ // انظر إذا كنت تحصل عليه. // قم بإزالة UTF-8 المحتملة ، وما إلى ذلك ، لأنه قد يحتوي على ملفات رأس BOM. سلسلة السلسلة = formatString (json.toString ()) ؛ jsonparser parser = new jsonparser () ؛ org.json.simple.jsonobject data = new org.json.simple.jsonobject () ؛ data = (org.json.simple.jsonobject) parser.parse (النتيجة) ؛ EventVo eventVo = new EventVo (data) ؛ // تمرير القيمة إلى log.info ("eventVo = {}" ، eventVo) ؛ }/*** قم بإزالة رأس القنبلة*/public Static String FormatString (سلسلة S) {if (s! = null) {s = s.replaceall ("/ufeff" ، "") ؛ } العودة s ؛ } نتائج الاختبار
تم تعيين قيمة للكائن
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.