Дейв Чейни, известный эксперт на GO, подчеркивает требование для запятых в составных буквальных декларациях. Однако это правило, кажется, вступит в конфликт с диаграммой JSON. Тип jsonObject struct { Objects [] ObjectType `json:" Objects "` } Тип объекта obhertype struct { Название строки `json:" name "` } func main () { байты: = [] byte (`{" объекты ": [ {"name": "foo"}, // Удалить запятую, чтобы заставить код работать! ]} `) jsontype: = & jsonObject {} json.unmarshal (байты и jsontype) fmt.printf ("Результаты: %v \ n", jsontype.objects [0] .name) // Паника: Ошибка времени выполнения: индекс вне диапазона }
Удаление запятой о запятой разрешает ошибку времени выполнения. Поддерживает ли исправление этого несоответствия? Спецификация JSON не позволяет следить за запятыми. В то время как синтаксис Go Синтаксис мандаты с запятыми в составных литералах, это требование не относится к диаграмме JSON.
]// 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
}
{"Objects": [ {"name": "foo"}, ]}.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3