我有这个 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
- 1 回答
- 0 关注
- 132 浏览
添加回答
举报
0/150
提交
取消