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

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

Patricia Arquette
Patricia Arquette原创
2024-11-27 07:06:10382浏览

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

解组具有混合值类型的 JSON 数组

由于要求,解组包含不同类型值的 JSON 数组可能会在 Go 中带来挑战用于 Go 数组中的显式类型定义。

Case研究:

考虑以下无效的 JSON 示例:

["NewYork", 123]

尝试将此数组解码为 Go 数组将会失败,因为 Go 数组需要固定类型,即在这种情况下未知。

解决方案:

克服这个问题限制,Go提供了interface{}类型,它允许存储任何类型的值。通过利用interface{},可以解组包含混合值类型的JSON数组,如下所示:

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)
}

在这个示例中,我们定义一个自定义类型UntypedJson作为字符串键到切片的映射界面{}。然后将 JSON 数组解组到 UntypedJson 实例中。 fmt.Printf 语句显示解组数据,其中包含 JSON 数组中的混合值。

通过利用 interface{} 类型,可以解组包含不同类型值的 JSON 数组,从而提供更多信息针对复杂数据场景的灵活多功能解决方案。

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

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