为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
汪汪一只猫 2022-04-26 15:42:55
我需要用 [][]interface{} 数组解组复杂的 json 数据。我想使用更抽象的结构类型来解组它,但 Golang 只能将其识别为 []interface{}。示例代码:// I want to use this, but not workvar r1 = struct {    Data map[string]interface{}}{}// Works well, but too complex if data nest muchvar 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 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

解决方案1:

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

//img1.sycdn.imooc.com//6267a29a000141bb09960496.jpg

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


查看完整回答
反对 回复 2022-04-26
  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信