فك تنظيم مصفوفات JSON مع أنواع البيانات المختلطة
غالبًا ما تشكل مهمة إلغاء تنظيم مصفوفات JSON التي تحتوي على قيم من أنواع بيانات مختلفة تحديًا. على سبيل المثال، خذ بعين الاعتبار مصفوفة JSON التالية:
{["NewYork",123]}
المشكلة:
أولاً، من المهم ملاحظة ذلك أن JSON المقدم غير صحيح من الناحية النحوية. تتطلب كائنات JSON مفاتيح لكل قيمة، لذا فإن التمثيل الصحيح سيكون إما {"key":["NewYork",123]} أو ببساطة ["NewYork",123].علاوة على ذلك، عند التعامل مع JSON تتكون المشكلة من أنواع بيانات متعددة، وتنشأ المشكلة عندما تتطلب صفائف Go نوعًا محددًا. قد يجعلك هذا تتساءل عن كيفية التعامل مع مثل هذه المواقف.الحل:
مفتاح معالجة هذه المشكلة هو استخدام واجهة الكتابة{}. يسمح لك بالتعامل مع قيم الأنواع المتنوعة دون الحاجة إلى تحويل نوع صريح. فيما يلي مثال للتعليمة البرمجية يوضح كيفية عمله:import ( "الترميز/json" "إف إم تي" ) const j = `{"NYC": ["NewYork",123]}` اكتب خريطة UntypedJson[string][]interface{} الوظيفة الرئيسية () { أوت := أونتيبيدجسون {} fmt.Println(json.Unmarshal([]byte(j), &ut)) fmt.Printf("%#v"، ut)import ( "encoding/json" "fmt" ) const j = `{"NYC": ["NewYork",123]}` type UntypedJson map[string][]interface{} func main() { ut := UntypedJson{} fmt.Println(json.Unmarshal([]byte(j), &ut)) fmt.Printf("%#v", ut) }في هذا المثال، نستخدم UntypedJson كنوع مخصص يقوم بتعيين السلاسل إلى شرائح من الواجهة{}. من خلال استخدام نوع الواجهة{}، يمكننا التعامل بسهولة مع أنواع البيانات المختلطة داخل مصفوفة JSON.مخرجات البرنامج ستكون:
import ( "encoding/json" "fmt" ) const j = `{"NYC": ["NewYork",123]}` type UntypedJson map[string][]interface{} func main() { ut := UntypedJson{} fmt.Println(json.Unmarshal([]byte(j), &ut)) fmt.Printf("%#v", ut) }الاستنتاج:
من خلال الاستفادة من نوع الواجهة{}، يمكّنك هذا الأسلوب من إلغاء تنظيم صفائف JSON بأنواع مختلفة من البيانات بشكل فعال.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3