首页 >后端开发 >Golang >如何在 Go 中解码具有混合数据类型的 JSON 数组?

如何在 Go 中解码具有混合数据类型的 JSON 数组?

Barbara Streisand
Barbara Streisand原创
2024-11-26 10:06:10789浏览

How Can I Decode JSON Arrays with Mixed Data Types in Go?

解码 JSON 中混合类型的数组

处理包含不同类型值的 JSON 数组时,必须考虑如何解组将它们有效地转化为 Go 程序。 Go 数组需要显式定义的类型,这在处理不同的值类型时带来了挑战。

解决方案:利用接口{}

解决方案在于使用接口{} ,Go 中的一种特殊类型,可以保存任何类型的值。通过使用 interface{} 数组,我们可以灵活地在同一数组中存储不同类型的值。

示例实现

考虑以下 JSON 示例:

{"key": ["NewYork", 123]}

要使用接口{}解组此 JSON,我们可以定义自定义数据结构:

type UntypedJson map[string][]interface{}

此类型表示从字符串到接口{}数组的映射,允许存储任何类型的值。

解组 JSON

要解组 JSON,我们可以使用 json.Unmarshal function:

var ut UntypedJson
json.Unmarshal([]byte(jsonString), &ut)

ut 变量现在将包含作为 UntypedJson 类型的未编组数据。映射键对应于 JSON 对象键,数组值保存不同类型的值。

示例 Playground

嵌入 Go 游乐场的完整示例可以可以在这里找到:

const j = `{"NYC": ["NewYork",123]}`

type UntypedJson map[string][]interface{}

func main() {
    ut := UntypedJson{}
    fmt.Println(json.Unmarshal([]byte(j), &ut))
    fmt.Printf("%#v", ut)
}

以上是如何在 Go 中解码具有混合数据类型的 JSON 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn