解密未知字段的JSON

前端之家收集整理的这篇文章主要介绍了解密未知字段的JSON前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下的 JSON
{"a":1,"b":2,"?":1,"??":1}

我知道它有“a”和“b”字段,但我不知道其他字段的名称.所以我想解散它在以下类型:

type Foo struct {
  A int `json:"a"`
  B int `json:"b"`
  X map[string]interface{} `json:???` // Rest of the fields should go here.
}

我怎么做?

解决方法

这不是很好,但你可以通过实施Unmarshaler:
type _Foo Foo

func (f *Foo) UnmarshalJSON(bs []byte) (err error) {
    foo := _Foo{}

    if err = json.Unmarshal(bs,&foo); err == nil {
        *f = Foo(foo)
    }

    m := make(map[string]interface{})

    if err = json.Unmarshal(bs,&m); err == nil {
        delete(m,"a")
        delete(m,"b")
        f.X = m
    }

    return err
}

类型_Foo是必要的,以避免解码时的递归.

猜你在找的JavaScript相关文章