登录
首页 >  Golang >  Go问答

将API请求嵌套到结构中

来源:stackoverflow

时间:2024-03-13 11:06:26 148浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《将API请求嵌套到结构中》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我当前正在将 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. 您的 url 字段是 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 结构时可能的方法: 你可以把你的json粘贴到this website上,然后就可以得到它对应的go结构,也可以顺便修正你的json。

好了,本文到此结束,带大家了解了《将API请求嵌套到结构中》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>