解组具有混合值类型的 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中文网其他相关文章!