gpt4 book ai didi

json - 从 json unmarshal 键入断言二维接口(interface)数组的更简单方法

转载 作者:行者123 更新时间:2023-12-01 22:26:48 25 4
gpt4 key购买 nike

我需要用 [][]interface{} 数组解码复杂的 json 数据。我想使用更抽象的结构类型来解码它,但 Golang 只能将其识别为 []interface{}。

示例代码:

// I want to use this, but not work
var r1 = struct {
Data map[string]interface{}
}{}

// Works well, but too complex if data nest much
var r2 = struct {
Data struct{
P1 int64
P2 [][]interface{}
}
}{}

jsonData := []byte(`{"data" :{"p1": 0, "p2":[["1", null], ["2", null] ]}}`)

json.Unmarshal (jsonData, &r1)
_, ok := r1.Data["p2"].([][]interface{})
fmt.Println(ok)

fmt.Println("======")

_, ok = r1.Data["p2"].([]interface{})
fmt.Println(ok)

fmt.Println("======")

json.Unmarshal (jsonData, &r2)
fmt.Println(r2.Data.P2)

输出:
false
======
true
======
[[1 <nil>] [2 <nil>]]

最佳答案

解决方案1:

您需要对空的 interface{} 类型应用两次断言。

enter image description here

https://play.golang.org/p/AeV6_fC3vYI

关于json - 从 json unmarshal 键入断言二维接口(interface)数组的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59502850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com