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

将 API 请求拉入嵌套结构

将 API 请求拉入嵌套结构

Go
梵蒂冈之花 2022-12-26 10:26:12
我目前正在将 API 响应提取到结构中。我可以正常回答说:  [     {"date":"2021-10-04","user":"Test","url":"Anonymous"]},    {"date":"2021-10-04","user":"Test","url":"Anonymous"]},    {"date":"2021-10-04","user":"Test","url":"Anonymous"]},  ]但是当我得到这样的数据时:  "urls": [    {"date":"2021-10-04","user":"Test","url":"Anonymous"]},    {"date":"2021-10-04","user":"Test","url":"Anonymous"]},    {"date":"2021-10-04","user":"Test","url":"Anonymous"]},  ]我似乎无法将它解析为结构。这似乎是一个愚蠢的问题,因为它基本上是一样的。这是我在做什么:   type urls struct {    Urls struct {        Date   string `json:"date"`        User   string `json:"user"`        Urls   string `json:"urls"`    } `json:"urls"`   }   type url []urls在函数中:   resp, err := http.Get("https://url")   if err != nil {        fmt.Println("No response from request")   }   defer resp.Body.Close()   body, err := ioutil.ReadAll(resp.Body) // response body is []byte   var u url   _ = json.Unmarshal(body, &u)不幸的是,这不起作用,你是空的。通过第一个响应,我可以有一个这样的结构并且它工作正常:  type urls struct {       Date   string `json:"date"`       User   string `json:"user"`       Urls   string `json:"urls"`  }
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

我想我想说的是上述内容的结合,再加上我的一点经验。

  1. 您的 Urls 字段是 JSON 中的一个数组,但不在您声明的结构中。

  2. 您不应忽略 json.Unmarshal(body, &u) 返回的错误。

  3. 您发布的 Json 在语法上不正确。我稍微修改了你的 Json 字符串,它可能是:

{"urls": [
    {"date":"2021-10-04","user":"Test","url":"Anonymous"},
    {"date":"2021-10-04","user":"Test","url":"Anonymous"},
    {"date":"2021-10-04","user":"Test","url":"Anonymous"}
  ]
}

Go 结构应该是:

type URL struct {
    SubURLs []struct {
        Date string `json:"date"`
        User string `json:"user"`
        URL  string `json:"url"`
    } `json:"urls"`}

接下来给大家介绍一种在处理JSON to Go structs时可能的方法: 你可以把你的Json贴在这个网站上,然后你就可以得到它对应的Go结构体,你也可以顺便修正你的Json。


查看完整回答
反对 回复 2022-12-26
  • 1 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号