gpt4 book ai didi

json - 反序列化 "oneOf"结构的 Json 数组

转载 作者:数据小太阳 更新时间:2023-10-29 03:09:24 25 4
gpt4 key购买 nike

我有一个包含数组的 JSON 文档,其中每个项目都是一个字符串或表示一个对象的映射。

{"oneOfArray": ["str1", "str2", {"SomeStruct": "value3"}, "str4", {"SomeStruct": "value5"} ]}

如何创建表示这种结构的 Go 类并通过 json 包提供反序列化?

最佳答案

Go(目前)还没有泛型支持,因此您无法创建一个数组来表示来自 JSON 的不同类型的值。

一种方法是使用 []interface{} 类型的 slice ,以及 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]]}

关于json - 反序列化 "oneOf"结构的 Json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54455223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com