توفر لغة البرمجة GO خيارًا أنيقًا للتعامل مع هذا السيناريو. من خلال الاستفادة من الواجهة {} النوع بالتزامن مع نوع التأكيد ، يمكننا تحليل النوع الأساسي لكل عنصر من عناصر الصفيف و unmarshal وفقًا لذلك. يستورد ( "الترميز/JSON" "FMT" ) func decodejson (و interface {}) { تبديل VF: = f. (type) { خريطة الحالة [سلسلة] واجهة {}: fmt.println ("هي خريطة:") لـ K ، V: = Range VF { ChectTypeandDecode (K ، V) } Case [] interface {}: fmt.println ("هي صفيف:") لـ K ، V: = Range VF { ChectTypeandDecode (K ، V) } } } func checktypeanddecode (k string ، v interface {}) { تبديل VV: = v. (type) { سلسلة العلبة: fmt.printf ("٪ v: is string - ٪ q \ n" ، K ، VV) القضية int: fmt.printf ("٪ v: is int - ٪ q \ n" ، k ، vv) تقصير: fmt.printf ("٪ V:" ، K) Decodejson (V) } } Func Main () { my_json: = `{ "an_array": [ "with_a string" ، { "و": "Some_more" ، "مختلف": ["متداخل" ، "أنواع"] } ] } ` واجهة var f {} ERR: = json.unmarshal ([] byte (my_json) ، & f) إذا خطأ! = لا شيء { fmt.println (err) } آخر { fmt.println ("json:") Decodejson (F) } }
يستخدم هذا الكود المعدل وظيفة decodejson لتحليل بنية JSON بشكل متكرر ، وتحديد نوع بيانات كل عنصر وطباعة التمثيل المناسب. بالنسبة للهياكل المتداخلة المعقدة ، يتم تنفيذ المكالمات المتداخلة إلى decodejson. هي خريطة: an_array: صفيف: 0: is string - "with_a string" 1: هي خريطة: و: سلسلة - "Some_more" مختلف: هو صفيف: 0: سلسلة - "متداخلة" 1: is string - "أنواع"
مع هذا الفهم المحسن لمعالجة النوع في GO ، يمكنك أن لا تحتوي على صفيفات غير متجانسة بثقة تحتوي على مزيج غير متجانس من أنواع البيانات ، وضمان تمثيل بيانات دقيق ومتسق في تطبيقاتك. [&&.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3