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

كيف يمكنني إلغاء تنظيم تنسيقات JSON غير المعروفة في Go؟

تم النشر بتاريخ 2024-12-23
تصفح:564

How Can I Unmarshal Unknown JSON Formats in Go?

إلغاء تنظيم بيانات JSON ذات تنسيق غير معروف

مقدمة

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

إلغاء التنظيم باستخدام واجهة الخريطة[string]{}

نظرًا لأنك لا تعرف المفاتيح الموجودة في مقدمًا، يمكنك استخدام Map[string]interface{} لإلغاء تنظيم حمولة JSON الخاصة بك. يسمح لك هذا بتخزين أزواج القيمة الرئيسية كخريطة دون تحديد أنواع القيم.

var grades map[string]interface{}

err := json.Unmarshal([]byte(jsonString), &grades)
fmt.Println(err)

fmt.Printf("%#v\n", grades)

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

استخدام json:"-" العلامة

يمكنك استبعاد حقول معينة من تنظيم/إلغاء تنظيم JSON باستخدام علامة json: "-". يمكن أن يكون هذا مفيدًا إذا كنت تريد الحفاظ على خصوصية بعض البيانات أو تجنب المراجع الدائرية.

اكتب GradeData struct { خريطة الدرجات[string]interface{} `json:"-"` } فار الدرجاتData GradeData يخطئ := json.Unmarshal([]byte(jsonString), &gradesData.Grades) FMT.Println (يخطئ) fmt.Printf("%#v\n",gradesData)
type GradeData struct {
    Grades map[string]interface{} `json:"-"`
}

var gradesData GradeData
err := json.Unmarshal([]byte(jsonString), &gradesData.Grades)
fmt.Println(err)

fmt.Printf("%#v\n", gradesData)
في هذا المثال، لن يتم تضمين حقل الدرجات في تمثيل JSON لبيانات الدرجات، ولكن لا يزال من الممكن استخدامه لتخزين واسترداد JSON data.

الاستنتاج

باستخدام Map[string]interface{} وعلامة json:"-"، يمكنك بنجاح إلغاء تنظيم بيانات JSON ذات التنسيق غير المعروف في بنيات GoLang. يتيح لك هذا الأسلوب التعامل مع هياكل JSON الديناميكية وغير المعروفة بأناقة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3