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

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

Barbara Streisand
发布: 2024-11-24 03:52:09
原创
770 人浏览过

How to Unmarshal JSON Arrays with Mixed Data Types in Go?

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

解组包含不同数据类型值的 JSON 数组的任务通常会带来挑战。例如,考虑以下 JSON 数组:

{["NewYork",123]}
登录后复制

问题:

首先,需要注意的是,提供的 JSON 在语法上不正确。 JSON 对象需要每个值的键,因此正确的表示形式是 {"key":["NewYork",123]} 或简单地 ["NewYork",123]。

此外,在处理 JSON 时由于数组由多种数据类型组成,当 Go 数组需要指定类型时就会出现问题。这可能会让您想知道如何处理这种情况。

解决方案:

解决这个问题的关键是使用类型接口{}。它允许您处理各种类型的值,而无需显式类型转换。下面是演示其工作原理的代码示例:

import (
    "encoding/json"
    "fmt"
)

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 作为将字符串映射到 interface{} 切片的自定义类型。通过利用interface{}类型,我们可以轻松处理JSON数组中的混合数据类型。

程序的输出将是:

<nil>
map[string][]interface{}{"NYC": \["NewYork" 123]}
登录后复制

结论:

通过利用interface{}类型,这种方法使您能够有效地用各种数据解组JSON数组类型。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板