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