登录
首页 >  Golang >  Go问答

Golang中的JSON字段解码

来源:stackoverflow

时间:2024-02-20 18:36:24 139浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《Golang中的JSON字段解码》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我有一个简单的函数,它从特定的 uri 获取 json 响应。该函数接受 httprequestinterface{},这是一个指向我想要在其中解组 json 响应的结构的指针。

func (c *client) sendrequest(req *http.request, v interface{}) error {
      ...
      
      return json.newdecoder(resp.body).decode(&v)
}

json 响应的示例是:

{
  "data": {
    "id": "9da7a204-544e-5fd1-9a12-61176c5d4cd8"
  }
}

结构体的一个例子是:

type User struct {
        ID  string `json:"id;omitempty"`
    }

现在,问题出在 data 对象上。对于这个对象,解码操作失败,因为该对象不包含在我的结构中。我想直接解码 data 对象的内容,而不使用临时结构,但我不明白该怎么做。


正确答案


使用包含要解组的 user 结构的结构。请参阅下面的响应结构。

type user struct {
    id string `json:"id;omitempty"`
}

type response struct {
    data user `json:"data"`
}

解组后,如果 r 是您的 response 实例,您可以通过 r.data 访问您的 user

由于您在编译时不知道类型,因此您也可以使用 interface{} 作为字段的类型。

type response struct {
    data interface{} `json:"data"`
}

r := response{
    data: &user{},
}

json.newdecoder(resp.body).decode(&r)

然后获取您的用户实例

userNew, _ := r.Data.(*User)

p.s:您的 json 标记代码中有一个拼写错误。将 ; 替换为 ,

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Golang中的JSON字段解码》文章吧,也可关注golang学习网公众号了解相关技术文章。

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