لماذا يقوم json.Unmarshal بإرجاع خريطة بدلاً من البنية المتوقعة؟
var ping interface{} = Ping{}
deserialize([]byte(`{"id":42}`), &ping)
fmt.Println("DONE:", ping) // It's a simple map now, not a Ping. Why?
لحل هذه المشكلة، قم إما بتمرير مؤشر إلى بنية Ping بشكل صريح كواجهة مجردة:var ping interface{} = &Ping{}
deserialize([]byte(`{"id":42}`), ping)
fmt.Println("DONE:", ping)
بدلاً من ذلك، إذا كان المؤشر المباشر غير متوفر، قم بإنشاء مؤشر جديد باستخدام الانعكاس، وإلغاء التسلسل فيه، ثم انسخ القيمة مرة أخرى: واجهة var ping{} = Ping{}
nptr := Reflect.New(reflect.TypeOf(ping))
إلغاء التسلسل ([] بايت (`{"id":42}`)، nptr.Interface())
بينغ = nptr.Interface()
fmt.Println("تم:"، بينغ)
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3