首頁 > 後端開發 > Golang > 主體

JSON 中的尾隨逗號:為什麼 Go 的複合文字語法與 JSON 解析衝突?

DDD
發布: 2024-10-28 20:17:31
原創
299 人瀏覽過

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

Go 解析 JSON 時出現尾隨逗號語法錯誤

Go 著名專家 Dave Cheney 強調了複合文字聲明中尾隨逗號的要求。但是,此規則似乎與 JSON 解析衝突。

考慮以下程式碼:

<code class="go">// 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
}</code>
登入後複製

刪除尾隨逗號可以解決執行時間錯誤。 Go 是否支援修復這種不一致問題?

解決方案

不幸的是,沒有解決方案。 JSON 規範不允許尾隨逗號。雖然 Go 語法要求在複合文字中使用尾隨逗號,但此要求不適用於 JSON 解析。

換句話說,以下JSON 無效:

<code class="json">{ "objects": 
    [ 
        {"name": "foo"},
]}</code>
登入後複製

儘管有可能出現特定的情況JSON 解析器忽略尾隨逗號,應避免這種做法,因為在使用其他有效的JSON解析器時可能會導致錯誤。

以上是JSON 中的尾隨逗號:為什麼 Go 的複合文字語法與 JSON 解析衝突?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!