我想反序列化一个包含某个接口数组的对象Entity:
type Result struct {
Foo int;
Bar []Entity;
};
Entity是由许多结构类型实现的接口。JSON 数据通过每个实体中的“类型”字段标识结构类型。例如
{"type":"t1","field1":1}
{"type":"t2","field2":2,"field3":3}
我将如何以Result正确填充数组的方式反序列化类型。据我所知,我必须:
实施UnmarshalJSON
上Result
。
解析Bar
为[]*json.RawMessage
.
将每个原始消息解析为map[string]interface{}
.
检查原始消息中的“类型”字段。
创建适当类型的结构。
再次解析原始消息,这次解析为刚刚创建的结构体。
这一切听起来非常乏味和无聊。有一个更好的方法吗?或者我是在向后做,并且有更规范的方法来处理异构对象数组?
相关分类