[英]Deserializing Json array of “oneOf” structures
我有JSON文档,其中包含一个数组,其中每个项目都是字符串或表示对象的映射。
{"oneOfArray": ["str1", "str2", {"SomeStruct": "value3"}, "str4", {"SomeStruct": "value5"} ]}
如何创建代表这种结构的Go类并通过json
包提供反序列化?
Go还没有通用支持(因此),因此您不能创建一个表示来自JSON的不同类型值的数组。
一种方法是使用[]interface{}
类型的切片,然后encoding/json
包将选择要编组的类型本身,对于JSON对象,将使用map[string]interface{}
。
您可以使用以下类型对外部对象建模:
type Obj struct {
OneOfArray []interface{} `json:"oneOfArray"`
}
解组输入内容的示例:
src := `{"oneOfArray": ["str1", "str2", {"SomeStruct": "value3"}, "str4", {"SomeStruct": "value5"} ]}`
var obj Obj
if err := json.Unmarshal([]byte(src), &obj); err != nil {
panic(err)
}
fmt.Println(obj)
输出(在Go Playground上尝试):
{[str1 str2 map[SomeStruct:value3] str4 map[SomeStruct:value5]]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.