【发布时间】:2016-08-01 13:45:51
【问题描述】:
Dave Cheney 是 Go 领域的主要主题专家之一,他写道:“使用复合文字初始化变量时,Go 要求复合文字的每一行都以逗号结尾,甚至是声明的最后一行。这是semicolon rule 的结果。”
但是,当我尝试将这个漂亮的规则应用于 JSON 文本时,解析器似乎并不同意这种理念。在下面的代码中,删除逗号有效。是否有解决此问题的方法,所以当我在差异中添加元素时,我只能看到一行更改?
package main
import (
"fmt"
"encoding/json"
)
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
}
【问题讨论】: