"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > GO ARRAY PARSINCED MUNTID TYPE METRO

GO ARRAY PARSINCED MUNTID TYPE METRO

نشر في 2025-04-17
تصفح:311

How to Unmarshal a Go Array with Disparate Data Types?

ومع ذلك ، فإن إلغاء تحديد مجموعة من الأنواع المختلطة بترتيب متميز يمثل تحديًا. يتطلب حل هذه المشكلة حلًا يمكن أن يستوعب أنواع البيانات المختلفة بطريقة مرنة.

توفر لغة البرمجة 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