你想实现什么?
我正在尝试从JSON API解析数据。
粘贴显示问题的代码部分。
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type Structure struct {
stuff []interface{}
}
func main() {
url := "https://api.coinmarketcap.com/v1/ticker/?start=0&limit=100"
response, err := http.Get(url)
if err != nil {
panic(err)
}
body, err := ioutil.ReadAll(response.Body)
if err != nil {
panic(err)
}
decoded := &Structure{}
fmt.Println(url)
err = json.Unmarshal(body, decoded)
if err != nil {
panic(err)
}
fmt.Println(decoded)
}
您希望结果如何?
我期望代码返回接口对象的列表。
实际结果如何?
我得到一个错误:panic: json: cannot unmarshal array into Go value of type main.Structure
4条答案
按热度按时间fnx2tebb1#
应用程序正在将JSON数组解组为结构。解组到切片:
考虑解组到特定于响应数据的结构体切片:
e0uiprwp2#
我也有同样的问题。使用此代码:
你会得到结果:【{BTC 7986.77} {ETH 455.857} {XRP 0.580848}...】
ztyzrc3y3#
这段代码将把值取到Slice中。或者只是相应地更新切片。
sqxo8psd4#
只是一个侧记,你也可能会收到这个错误,只是试图无意中解组数组作为一个对象,应该是一个对象,或可能反之亦然。
同样,您可能会看到尝试将数字解封为字符串时出现错误。
检查您的输入(GIGO)。