Dave Cheney ، وهو خبير مشهور أثناء التنقل ، يؤكد على متطلبات الفواصل الفاصلة في التصريحات الحرفية المركبة. ومع ذلك ، يبدو أن هذه القاعدة تتعارض مع تحليل JSON.
النظر في الكود التالي:
اكتب jsonobject struct { Objects [] ObjectType `json:" Objects "` } اكتب ObjectType struct { اسم سلسلة `json:" الاسم "` } Func Main () { Bytes: = [] Byte (`{" Objects ": [ {"name": "foo"} ، // قم بإزالة الفاصلة لجعل الكود يعمل! ]} `) jsontype: = & jsonobject {} json.unmarshal (bytes ، & jsontype) fmt.printf ("النتائج: ٪ v \ n" ، jsontype.objects [0] }// package, imports omitted for brevity
type jsonobject struct {
Objects []ObjectType `json:"objects"`
}
type ObjectType struct {
Name string `json:"name"`
}
func main() {
bytes := []byte(`{ "objects":
[
{"name": "foo"}, // REMOVE THE COMMA TO MAKE THE CODE WORK!
]}`)
jsontype := &jsonobject{}
json.Unmarshal(bytes, &jsontype)
fmt.Printf("Results: %v\n", jsontype.Objects[0].Name) // panic: runtime error: index out of range
}
الحل
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3