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

كيفية إلغاء تسلسل بنيات JSON الديناميكية المتداخلة في Go؟

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

How to Deserialize Dynamic Nested JSON Structures in Go?

فك تشفير هياكل JSON الديناميكية المتداخلة في Go

في Go، قد يكون إلغاء تسلسل بيانات JSON باستخدام الهياكل الديناميكية المتداخلة أمرًا صعبًا. يوضح استعلام حديث هذه المشكلة:

{
    "status": "OK",
    "status_code": 100,
    "sms": {
        "79607891234": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        },
        "79035671233": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        },
        "79105432212": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        }
    },
    "balance": 2676.18
}

لإلغاء تسلسل هذه البيانات، نحتاج إلى استخدام خريطة لنمذجة القائمة الديناميكية لحالات الرسائل القصيرة. إليك الكود المعدل:

type SMSPhone struct {
    Status     string `json:"status"`
    StatusCode int    `json:"status_code"`
    StatusText string `json:"status_text"`
}

type SMSSendJSON struct {
    Status     string              `json:"status"`
    StatusCode int                 `json:"status_code"`
    Sms        map[string]SMSPhone `json:"sms"`
    Balance    float64             `json:"balance"`
}

الآن، كشف تنظيم بيانات JSON باستخدام هذه البنية المعدلة:

var result SMSSendJSON

if err := json.Unmarshal([]byte(src), &result); err != nil {
    panic(err)
}
fmt.Printf("% v", result)

سيتم إلغاء تسلسل الهياكل الديناميكية المتداخلة بشكل صحيح، مما يؤدي إلى:

{Status:OK StatusCode:100 Sms:map[79035671233:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения} 79105432212:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения} 79607891234:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения}] Balance:2676.18}

المفاتيح الموجودة في النتيجة.تتوافق خريطة الرسائل القصيرة مع أرقام الهواتف الديناميكية، وقيمها هي حالات الرسائل القصيرة المعنية.

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

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

Copyright© 2022 湘ICP备2022001581号-3