«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Запятые запятыми в JSON: Почему композитный литеральный синтаксический конфликт GO

Запятые запятыми в JSON: Почему композитный литеральный синтаксический конфликт GO

Опубликовано в 2025-03-23
Просматривать:308

  Trailing Commas in JSON: Why Does Go\'s Composite Literal Syntax Conflict with JSON Parsing?

Trailing Syntax Syntax Error в JSON SAINGING с Go

Дейв Чейни, известный эксперт на 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