解组异构结构的JSON数组

前端之家收集整理的这篇文章主要介绍了解组异构结构的JSON数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想反序列化包含某个接口实体的数组的对象:
type Result struct {
    Foo int;
    Bar []Entity;
};

实体是由许多结构类型实现的接口. JSON数据标识每个实体中具有“类型”字段的结构类型.例如.

{"type":"t1","field1":1}
{"type":"t2","field2":2,"field3":3}

我将如何以正确填充数组的方式对结果类型进行反序列化.从我所看到的,我必须:

>在Result上实现UnmarshalJSON.
>将Bar解析为[] * json.RawMessage.
>将每条原始消息解析为map [string] interface {}.
>检查原始邮件中的“类型”字段.
>创建适当类型的结构.
>再次解析原始消息,这次是刚创建的结构.

这一切听起来都很乏味和无聊.有一个更好的方法吗?或者我是否向后做,并且有一种更规范的方法来处理异构对象的数组?

解决方法

我认为你的过程可能比它要复杂得多,见 http://play.golang.org/p/0gahcMpuQc.单个map [string] interface {}将为你处理很多.

或者,您可以制作类似的类型

struct EntityUnion {
    Type string
    // Fields from t1
    // Fields from t2
    // ...
}

解散;它将设置Type字符串并填写它可以从JSON数据中获取的所有字段.然后,您只需要一个小函数将字段复制到特定类型.

猜你在找的JavaScript相关文章