panic:json:无法将数组解组为main.Structure类型的Go值 你想完成什么?
我正在尝试解析来自json api的数据 粘贴代码中显示问题的部分。 你期望结果是什么? 我希望代码返回接口对象的列表 你得到的实际结果是什么?panic:json:无法将数组解组为main.Structure类型的Go值 你想完成什么?,json,go,unmarshalling,Json,Go,Unmarshalling,我正在尝试解析来自json api的数据 粘贴代码中显示问题的部分。 你期望结果是什么? 我希望代码返回接口对象的列表 你得到的实际结果是什么? 我收到一个错误:panic:json:无法将数组解组为main.Structure类型的Go值应用程序正在将json数组解组为结构。解组到切片: var decoded []interface{} err = json.Unmarshal(body, &decoded) 考虑对[]映射[string]字符串或标记为的[]标记进行解组 t
我收到一个错误:
panic:json:无法将数组解组为main.Structure类型的Go值
应用程序正在将json数组解组为结构。解组到切片:
var decoded []interface{}
err = json.Unmarshal(body, &decoded)
考虑对[]映射[string]字符串或标记为的[]标记进行解组
type Tick struct {
ID string
Name string
Symbol string
Rank string
... and so on
}
我也有同样的问题。使用此代码:
type coinsData struct {
Symbol string `json:"symbol"`
Price string `json:"price_usd"`
}
func main() {
resp, err := http.Get("https://api.coinmarketcap.com/v1/ticker/?limit=0")
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
var c []coinsData
err = json.Unmarshal(body, &c)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%v\n", c)
}
您将得到以下结果:
[{BTC 7986.77}{ETH 455.857}{XRP 0.580848}…]如果您能稍微解释一下您的代码,那就太好了。这个示例有效,而不是另一个。您能解释一下为什么这样做吗?“无法将数组解组为main.Structure类型的Go值”实际上问题很简单,我们正在尝试用结构类型(object)解析数据数组。即使我们尝试用字符串数组(“[]字符串”)类型的变量解组响应,解组也会死机。但任何结构“[]MyStruct”的数组都将进行解析,但如果键不匹配,则会给出零值。
type coinsData struct {
Symbol string `json:"symbol"`
Price string `json:"price_usd"`
}
func main() {
resp, err := http.Get("https://api.coinmarketcap.com/v1/ticker/?limit=0")
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
var c []coinsData
err = json.Unmarshal(body, &c)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%v\n", c)
}