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

使用 Go (golang) 如何将数据解组到结构中,然后从结构中调用特定字段?

使用 Go (golang) 如何将数据解组到结构中,然后从结构中调用特定字段?

Go
江户川乱折腾 2021-11-01 15:46:51
我正在尝试执行 API 请求以从 steams 公共 API 获取一些信息(这主要是为了学习 Go 并且只是学习如何处理 Json / API 请求)到目前为止我已经得到了这段代码:package mainimport (    "encoding/json"    "fmt"    "io/ioutil"    "net/http"    "strconv")type SteamAPI struct {    APIKey string}type GetAppNews struct {    AppNews struct {        AppId     int `json:"appid"`        NewsItems []struct {            Gid           int    `json:"gid"`            Title         string `json:"title"`            Url           string `json:"url"`            IsExternalUrl bool   `json:"is_external_url"`            Author        string `json:"author"`            Contents      string `json:"contents"`            Feedlabel     string `json:"feedlabel"`            Date          int    `json:"date"`        } `json:"newsitems"`    } `json:"appnews"`}type JsonResponse map[string]GetAppNewsfunc (s SteamAPI) GetNewsForApp(appid, count, maxlength int) error {    sAppid := strconv.Itoa(appid)    sCount := strconv.Itoa(count)    sMaxlength := strconv.Itoa(maxlength)    resp, err := http.Get("http://api.steampowered.com/ISteamNews/GetNewsForApp/v0002/?appid=" + sAppid + "&count=" + sCount + "&maxlength=" + sMaxlength + "&format=json")    if err != nil {        return err    }    defer resp.Body.Close()    body, err := ioutil.ReadAll(resp.Body)    if err != nil {        return err    }    var jsonReturn JsonResponse    json.Unmarshal(body, &jsonReturn)    fmt.Println(jsonReturn)    return nil}func main() {        Tester := SteamAPI{""}        Tester.GetNewsForApp(440, 3, 300)}事情似乎有效,好吧,我想但它没有按照我期望的方式对其进行格式化。它打印出来是这样的:map[appnews:{{0 []}}]您可以单击此处查看 JSON 响应的确切格式,如果有人能告诉我我的结构做错了什么,最后我希望能够像这样:fmt.Println(blah["appnews"]["appid"])它会返回440。这就是我真正要讲的,如果您需要更多具体信息,请告诉我!谢谢您的帮助
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

数据很适合结构,不需要map[string]GetAppNews.

type JsonResponse map[string]GetAppNews应该只是GetAppNews

playground


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

添加回答

举报

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