我有2个结构:
type List struct {
ListID string `json:"listid"`
Name string `json:"name"`
Users []User `json:"users"`
}
type User struct {
Email string `json:"email"`
Name string `json:"name"`
}
我正在调用端点并成功获得具有以下结构的响应:
{
"Results":[
{"Email": "user1@domain.com", "Name": "test1" "State": "Active",…},
{"Email": "user2@domain.com", "Name": "test2" "State": "Active",…},
{"Email": "user3@domain.com", "Name": "test3", "State": "Active",…}
],
"SomeOtherStuff": "email"
}
我正在尝试将JSON响应解码为我的结构,如下所示:
err = json.NewDecoder(response.Body).Decode(&list.Users)
但我的struct中没有“Results”属性可以映射到。如何只将响应的结果键映射到我的用户结构数组?
答案 0 :(得分:2)
要获取数据,至少有两个选项:
解码为map [string] interface {}
m := create(map[string]interface{})
err = json.NewDecoder(response.Body).Decode(&m)
然后使用m [“结果”]键来吸引用户。
或者您可以解码为容器结构然后分配list.Users = container.Results。
type Container struct {
Results []User `json:"Results"`
SomeOtherStuff string `json:"SomeOtherStuff"`
}
要了解任意json的结构,请查看json2go。