栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 面试经验 > 面试问答

如何解组嵌套的未知字段

面试问答 更新时间:发布时间: 百科书网 趣学号

这正是json.RawMessage的目的(请参阅文档中的unmarshal示例)。首先解组JSON对象的顶级,检查kind字段,然后解组数据字段:

type Listing struct {   WhitelistStatus string  `json:"whitelist_status"`    Children        []Thing `json:"children"`        }type T3 struct {        Domain   string `json:"domain"`CrosspostParentList []struct {         Domain string `json:"domain"`     } `json:"crosspost_parent_list"`      }type Thing struct {    Kind string      `json:"kind"`    Data interface{} `json:"data"`}func (t *Thing) UnmarshalJSON(b []byte) error {    var step1 struct { Kind string          `json:"kind"` Data json.RawMessage `json:"data"`     }    if err := json.Unmarshal(b, &step1); err != nil { return err    }    var step2 interface{}    switch step1.Kind {    case "Listing": step2 = &Listing{}    case "t3": step2 = &T3{}    default: return errors.New("unknown kind: " + step1.Kind) // or simply ignore    }    if err := json.Unmarshal(b, step2); err != nil { return err    }    t.Kind = step1.Kind    t.Data = step2    return nil}

在操场上尝试:https :
//play.golang.org/p/giBVT2IWPd-



转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/471145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号