猿问

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

我一直在使用 Go 的内置 HTTP 库解析我通过 HTTP GET 请求检索的 JSON 对象。我最初尝试在 Go 中使用默认的 JSON 库来做到这一点,但我遇到了困难(我仍然是 Go 的新手)。我最终求助于使用不同的库并且在那之后几乎没有问题,如下所示:


package main


import (

    "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 对象中的值可能会更改):


antwan250

bbrock89

boxception22

cmnights

deernadia

fartfalcon

fijibot

foggythought

fulc_

h_ov

iceydefeat

kingbobtheking

lospollogne

nightbot

nosleeptv

octaviuskhan

pateyy

phosphyg

poisonyvie

shevek18

trox94

trox_bot

uggasmesh

urbanelf

walmartslayer

wift3

正如我之前所说,我正在使用托管在 Github 上的自定义库来完成我所需要的,但为了学习,我很好奇......我将如何使用 Go 的内置 JSON 库完成同样的事情?

明确地说,我想要做的是能够从 HTTP GET 请求返回的 JSON 对象中嵌入的每个 JSON 数组中获取用户。我还希望能够以相同的方式获取查看者、管理员、全局版主等的列表,但我认为如果我可以使用默认的 Go 库查看版主示例,然后为其他用户类型将是微不足道的。

先感谢您!


交互式爱情
浏览 123回答 1
1回答

GCT1015

如果您只想解组版主,请使用以下命令: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)    }}
随时随地看视频慕课网APP

相关分类

Go
我要回答