猿问

解组异构结构的 JSON 数组

我想反序列化一个包含某个接口数组的对象Entity:


type Result struct {

    Foo int;

    Bar []Entity;

};

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


{"type":"t1","field1":1}

{"type":"t2","field2":2,"field3":3}

我将如何以Result正确填充数组的方式反序列化类型。据我所知,我必须:

  1. 实施UnmarshalJSONResult

  2. 解析Bar[]*json.RawMessage.

  3. 将每个原始消息解析为map[string]interface{}.

  4. 检查原始消息中的“类型”字段。

  5. 创建适当类型的结构。

  6. 再次解析原始消息,这次解析为刚刚创建的结构体。

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


HUH函数
浏览 185回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答