عند العمل مع استجابات JSON في Go، يمكن أن يشكل الوصول إلى العناصر داخل المصفوفات المتداخلة تحديات. في كثير من الأحيان، تنشأ أخطاء مثل "نوع الواجهة {} لا يدعم الفهرسة" عند محاولة استرداد نقاط بيانات محددة.
لحل هذه المشكلة، من المهم فهم الطبيعة الأساسية لاستجابات JSON في Go. افتراضيًا، يتم تمثيل المصفوفات كشرائح []interface{}، بينما يتم تمثيل القواميس كخرائط Map[string]interface{}. ونتيجة لذلك، تفتقر متغيرات الواجهة إلى دعم الفهرسة.
للوصول إلى العناصر المتداخلة، تصبح تأكيدات الكتابة ضرورية. تتمثل إحدى الطرق في القيام بما يلي دون التحقق من الأخطاء:
objects := result["objects"].([]interface{})
first := objects[0].(map[string]interface{})
fmt.Println(first["ITEM_ID"])
ومع ذلك، يمكن أن تؤدي هذه الطريقة إلى حالة من الذعر إذا لم تتم محاذاة الأنواع. الطريقة الأكثر قوة هي استخدام نموذج الإرجاع الثنائي ومعالجة الأخطاء المحتملة:
objects, ok := result["objects"].([]interface{})
if !ok {
// Handle error
}
إذا كان JSON الخاص بك يتبع بنية متسقة، فكر في فك التشفير مباشرةً إلى نوع مخصص:type Result struct {
Query string `json:"query"`
Count int `json:"count"`
Objects []struct {
ItemId string `json:"ITEM_ID"`
ProdClassId string `json:"PROD_CLASS_ID"`
Available int `json:"AVAILABLE"`
} `json:"objects"`
}
بمجرد فك التشفير، يمكنك الوصول بسلاسة إلى العناصر المتداخلة مثل result.Objects[0].ItemId. تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3