我对Golang很陌生,我正试图解析大的json,就像从包含大量数据的API中获得的那样。文档解释了如何使用任何json来实现这一点:
b := []byte(`{"Name":"Wednesday","Age":6,"Parents":["Gomez","Morticia"]}`)
var f interface{}
err := json.Unmarshal(b, &f)
m := f.(map[string]interface{})这很好,但是当我使用从Twitter获得的json时,比如在推特开发网站上引用的末尾的json,我会得到以下错误:
接口转换:接口{}是[]接口{},而不是映射接口{}
我知道有类似的问题,但我找不到答案。有人能推荐我解决这个问题的更好方法吗?
我的go版本是go1.6.2Linux/amd64 64。
谢谢!
发布于 2017-01-23 02:09:53
在本例中,您不是要解组单个JSON对象,而是一个JSON对象数组,这就是解析API响应时遇到问题的原因。您看到的错误告诉您f的实际类型。另一个示例之所以有效,是因为它是一个单独的JSON对象,可以映射为map[string]interface{},请看以下内容:
var f []interface{}
err := json.Unmarshal(str, &f)
if err != nil {
fmt.Println(err)
return
}
for _, v := range f {
z := v.(map[string]interface{})
for k2, v2 := range z {
fmt.Println("Key:", k2, "Value:", v2)
}
}f应该是[]interface{}类型的接口数组。根据解析API响应的计划,您可以像我在for循环中所做的那样来显示每个键和值对。
https://stackoverflow.com/questions/41798046
复制相似问题