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

使用“嵌入式”键将 JSON 解组为结构

使用“嵌入式”键将 JSON 解组为结构

Go
月关宝盒 2022-03-07 22:36:02
我有这个 JSON:{  id : "12345",  videos: {    results: [      {        id: "533ec655c3a3685448000505",        key: "cYyx5DwWu0k"      }    ]  }}我想将它解组为这个结构:type Film struct {    ID          int     `json:"id"`    Videos      []Video `json:"videos"`}type Video struct {    ID   string  `json:"id"`    Key  string  `json:"key"`}我的意思是,我想将Videos字段构造为videos.results数组。如果我这样做:body := //retrieve json abovevar film Filmjson.Unmarshal(body, &film)显然不起作用,因为它无法将videosjson 键解组为Video数组,因为results键。我怎样才能做到这一点?
查看完整描述

1 回答

?
MMMHUHU

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

您可以定义一个解组器来为Film您“解包”嵌套的 JSON 结构。例子:


func (f *Film) UnmarshalJSON(b []byte) error {

    internal := struct {

        ID     int `json:"id"`

        Videos struct {

            Results []Video `json:"results"`

        } `json:"videos"`

    }{}


    if err := json.Unmarshal(b, &internal); err != nil {

        return err

    }

    f.ID = internal.ID

    f.Videos = internal.Videos.Results

    return nil

}

https://play.golang.org/p/rEiKqLYB-1


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

添加回答

举报

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