”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 Go 中解组具有混合数据类型的 JSON 数组?

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

发布于2024-12-22
浏览:301

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 数组由多种数据类型组成,因此当 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 数组。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3