我需要解析json数据,并且解析对象结构或纯数组(具有相同类型的元素)没有问题
go版本go1.12.9 darwin / amd64
({{1)}的Json格式
[uint8,uint8,uint32,uint16,uint16,[3][20]int16][]
需要解析为以下结构
[
[
0,
0,
297,
153,
78,
[
[1871, 1547, ...],
[...],
[...]
]
]
...
]
如何解析
答案 0 :(得分:0)
一种方法是:
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())
当然,您必须在代码中添加错误和范围检查。
答案 1 :(得分:0)
我已经解决了
var bytesData = []byte(`[........]`)
var entries [][]interface{}
if err := json.Unmarshal(bytesData, &entries); err != nil {
log.Fatal(err)
}
for _, value := range entries {
hb := HeartBeat{
Template: uint8(value[0].(float64)),
Calssify: uint8(value[1].(float64)),
Index: uint32(value[2].(float64)),
Tr: uint16(value[3].(float64)),
Hr: uint16(value[4].(float64)),
}
for arrIndex, arr := range value[5].([]interface{}) {
for listIndex, list := range arr.([]interface{}) {
hb.Feature[arrIndex][listIndex] = int16(list.(float64))
}
}
fmt.Println(hb)
}
在线预览地址 play golang