"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية الوصول بأمان إلى مصفوفات JSON المتداخلة في Go؟

كيفية الوصول بأمان إلى مصفوفات JSON المتداخلة في Go؟

تم النشر بتاريخ 2024-11-09
تصفح:210

How to Safely Access Nested JSON Arrays in Go?

فك رموز مشكلات الوصول إلى مصفوفة JSON في Go

عند العمل مع استجابات 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