首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析Golang中的大型json

如何解析Golang中的大型json
EN

Stack Overflow用户
提问于 2017-01-23 01:27:29
回答 1查看 3.4K关注 0票数 1

我对Golang很陌生,我正试图解析大的json,就像从包含大量数据的API中获得的那样。文档解释了如何使用任何json来实现这一点:

代码语言:javascript
复制
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。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-23 02:09:53

在本例中,您不是要解组单个JSON对象,而是一个JSON对象数组,这就是解析API响应时遇到问题的原因。您看到的错误告诉您f的实际类型。另一个示例之所以有效,是因为它是一个单独的JSON对象,可以映射为map[string]interface{},请看以下内容:

代码语言:javascript
复制
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循环中所做的那样来显示每个键和值对。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41798046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档