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

我有这个 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 above

var film Film

json.Unmarshal(body, &film)

显然不起作用,因为它无法将videosjson 键解组为Video数组,因为results键。


我怎样才能做到这一点?


月关宝盒
浏览 133回答 1
1回答

MMMHUHU

您可以定义一个解组器来为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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go