为了账号安全,请及时绑定邮箱和手机立即绑定

Golang - 从 Twitch TV RESTful 服务解析 JSON 字符串数组

Golang - 从 Twitch TV RESTful 服务解析 JSON 字符串数组

Go
交互式爱情 2021-11-29 16:51:40
我一直在使用 Go 的内置 HTTP 库解析我通过 HTTP GET 请求检索的 JSON 对象。我最初尝试在 Go 中使用默认的 JSON 库来做到这一点,但我遇到了困难(我仍然是 Go 的新手)。我最终求助于使用不同的库并且在那之后几乎没有问题,如下所示:package mainimport (    "github.com/antonholmquist/jason"    "fmt"    "net/http")func main() {    resp, err := http.Get("http://tmi.twitch.tv/group/user/deernadia/chatters")    if nil != err {        panic(err)    }    defer resp.Body.Close()    body, err := jason.NewObjectFromReader(resp.Body)    chatters, err := body.GetObject("chatters")    if nil != err {        panic(err)    }    moderators, err := chatters.GetStringArray("moderators")    if nil != err {        panic(err)    }    for _, moderator := range moderators {        fmt.Println(moderator)    }}其中github.com/antonholmquist/jason对应于我使用的自定义 JSON 库。此代码在 Linux shell 中运行时会产生类似于以下输出的内容(RESTful 服务大约每 30 秒更新一次,这意味着 JSON 对象中的值可能会更改):antwan250bbrock89boxception22cmnightsdeernadiafartfalconfijibotfoggythoughtfulc_h_oviceydefeatkingbobthekinglospollognenightbotnosleeptvoctaviuskhanpateyyphosphygpoisonyvieshevek18trox94trox_botuggasmeshurbanelfwalmartslayerwift3正如我之前所说,我正在使用托管在 Github 上的自定义库来完成我所需要的,但为了学习,我很好奇......我将如何使用 Go 的内置 JSON 库完成同样的事情?明确地说,我想要做的是能够从 HTTP GET 请求返回的 JSON 对象中嵌入的每个 JSON 数组中获取用户。我还希望能够以相同的方式获取查看者、管理员、全局版主等的列表,但我认为如果我可以使用默认的 Go 库查看版主示例,然后为其他用户类型将是微不足道的。先感谢您!
查看完整描述

1 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

如果您只想解组版主,请使用以下命令:


var v struct {

    Chatters struct {

        Moderators []string

    }

}

if err := json.Unmarshal(data, &v); err != nil {

    // handle error

}

 for _, mod := range v2.Chatters.Moderators {

    fmt.Println(mod)

}

如果您想获得所有类型的聊天记录,请使用以下命令:


var v struct {

    Chatters map[string][]string

}

if err := json.Unmarshal(data, &v); err != nil {

    handle error

}

for kind, users := range v1.Chatters {

    for _, user := range users {

        fmt.Println(kind, user)

    }

}


查看完整回答
反对 回复 2021-11-29
  • 1 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信