【发布时间】:2018-07-23 12:20:45
【问题描述】:
我是 golang 新手,我想在我的代码中添加一个 json 对象:
func getUserRandking() []KVU {
url := "http://127.0.0.1:8080/users"
spaceClient := http.Client{ Timeout: time.Second * 10,
}
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("User-Agent", "spacecount-tutorial")
res, getErr := spaceClient.Do(req)
if getErr != nil {
log.Fatal(getErr)
}
body, readErr := ioutil.ReadAll(res.Body)
if readErr != nil {
log.Fatal(readErr)
}
var users1 []KVU
jsonErr := json.Unmarshal(body, &users1)
if jsonErr != nil {
log.Fatal(jsonErr)
}
fmt.Println(users1)
return users1
}
但我收到此运行时错误
json: 无法将字符串解组为 []main.KVU 类型的 Go 值退出 状态 1
我要导入的 json 是这样的:
{
"name": "userslist",
"children": [
{
"name": "cat",
"value": 1,
"url": "http://example.com/1.jpg"
},
{
"name": "dog",
"value": 2,
"url": "http://example.com/2.jpg"
}
]
}
我尝试了不同的类型定义,例如下面的Users:
type KVU struct {
Key string `json:"name"`
Value int `json:"value"`
Url string `json:"url"`
}
type Users struct {
Name string `json:"name"`
Children []KVU `json:"children"`
}
但这也导致:
json: 无法将字符串解组为 []main.Users 类型的 Go 值
我该如何解决这个问题?
【问题讨论】:
-
Go 数据结构的结构必须与 JSON 匹配。您的 JSON 是一个对象,因此编组为结构而不是切片(这适用于 JSON 数组)。