7
欲deserialise的對象,其包括一些接口Entity
陣列的JSON數組:解組異質結構
type Result struct {
Foo int;
Bar []Entity;
};
Entity
是由多個結構類型的實現的接口。 JSON數據用每個實體中的「類型」字段標識結構類型。例如。
{"type":"t1","field1":1}
{"type":"t2","field2":2,"field3":3}
我怎麼會去這樣一種方式,它正確地填充陣列deserialising的Result
類型。從我所看到的,我必須:
- 實施
UnmarshalJSON
在Result
。 - 解析
Bar
作爲[]*json.RawMessage
。 - 解析每條原始信息爲
map[string]interface{}
。 - 檢查原始消息中的「type」字段。
- 創建適當類型的結構。
- 解析原始消息再次,這次進入剛剛創建的結構。
這一切聽起來很乏味乏味。有一個更好的方法嗎?還是我倒退了呢,還有更規範的方法來處理異構對象的數組?
我結束了一個「聯合」結構。它感到骯髒,但最終解放了。 –