golang json如何解码具有不同元素数据类型的二维数组

golang json如何解码具有不同元素数据类型的二维数组,json,go,buffer,Json,Go,Buffer,我需要解析json数据,解析对象结构或纯数组(相同类型的元素)没有问题 go版本go1.12.9达尔文/amd64 ([uint8,uint8,uint32,uint16,uint16,[3][20]int16][])的Json格式 需要解决以下结构 类型HeartBeat结构{ 模板uint8 计算uint8 索引uint32 truint16 Hr uint16 功能[3][20]int16 } 如何解析一种方法是: decoder:=json.NewDecoder(input) deco

我需要解析json数据,解析对象结构或纯数组(相同类型的元素)没有问题

go版本go1.12.9达尔文/amd64

[uint8,uint8,uint32,uint16,uint16,[3][20]int16][]
)的Json格式

需要解决以下结构

类型HeartBeat结构{
模板uint8
计算uint8
索引uint32
truint16
Hr uint16
功能[3][20]int16
}
如何解析

一种方法是:

decoder:=json.NewDecoder(input)
decoder.UseNumber()
var array []interface{}
decoder.Decode(&array)
heartBeat.Template=uint8(array[0].(json.Number).Int64())
heartBeat.Index=uint32(array[2].(json.Number).Int64())
...
feature:=array[5].([]interface{})
heartBeat.Feature[0][0]=int16(feature[0].([]interface{})[0].(json.Number).Int64())
当然,您必须在代码中添加错误和边界检查。

我已经解决了这个问题

var bytesData=[]字节(`[..]`)
变量项[][]接口{}
如果err:=json.Unmarshal(bytesData,&entries);呃!=零{
log.Fatal(错误)
}
对于u,值:=范围项{
hb:=心跳{
模板:uint8(值[0](float64)),
计算:uint8(值[1](浮点64)),
索引:uint32(值[2](浮动64)),
Tr:uint16(值[3](浮动64)),
Hr:uint16(值[4](浮动64)),
}
对于arrIndex,arr:=范围值[5]。([]接口{}){
对于listIndex,list:=范围arr.([]接口{}){
hb.Feature[arrIndex][listIndex]=int16(list.(float64))
}
}
fmt.Println(hb)
}
在线预览地址

decoder:=json.NewDecoder(input)
decoder.UseNumber()
var array []interface{}
decoder.Decode(&array)
heartBeat.Template=uint8(array[0].(json.Number).Int64())
heartBeat.Index=uint32(array[2].(json.Number).Int64())
...
feature:=array[5].([]interface{})
heartBeat.Feature[0][0]=int16(feature[0].([]interface{})[0].(json.Number).Int64())