解组具有混合数据类型的 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