我遇到了一些问题unmarshalling
,这些JSON数据到包含项目结构的Go(Golang)项目切片中:
response := {
"data": [
{
"name": "a",
"products": [
{
"name": "c"
}
]
},
{
"name": "b",
"products": [
{
"name": "d"
}
]
},
{
"name": "c",
"products": [
{
"name": "e"
}
]
}
]
}
这些是我的结构:
type Item struct {
Name string
Products
}
type Products struct {
Name string
}
切片基本上应该是转换为Go Items切片的“数据”属性(它是一个数组)的值。我尝试了以下操作,但是我一直得到一个空数组
var items []Item{}
json.Unmarshal(response, &items)
fmt.Println(items)
答案 0 :(得分:5)
您正试图将JSON解组为切片,但该JSON的根是一个对象(您可以知道,因为JSON以{
开头,表示对象的开始)。您需要考虑外层:
type Payload struct {
Data []Item
}
var payload Payload
json.Unmarshal(response, &payload)
fmt.Println(payload.Data)
答案 1 :(得分:0)
我建议使用这个很酷的工具来帮助您设计结构 https://mholt.github.io/json-to-go/ 就像Adrian所说的那样,您正在尝试用数组将JSON解组到对象。
type Product struct {
Name string `json:"name"`
}
type Response struct {
Data []struct {
Name string `json:"name"`
Products []Product `json:"products"`
} `json:"data"`
}