我一直在使用 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)
}
}
- 1 回答
- 0 关注
- 122 浏览
添加回答
举报
0/150
提交
取消