json - golang json如何解码具有不同元素数据类型的二维数组
问题描述
我需要解析json数据,解析对象结构或者纯数组(同类型元素)没有问题
go 版本 go1.12.9 darwin/amd64
[uint8,uint8,uint32,uint16,uint16,[3][20]int16][]
( )的 Json 格式
[
[
0,
0,
297,
153,
78,
[
[1871, 1547, ...],
[...],
[...]
]
]
...
]
需要解析成如下结构
type HeartBeat struct {
Template uint8
Calssify uint8
Index uint32
Tr uint16
Hr uint16
Feature [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())
当然,您必须在代码中添加错误和边界检查。
推荐阅读
- servicenow - ServiceNow 预测智能
- excel - Excel 使用当前工作簿中的表格获取 Power Query 参数 - 更有效的方法?
- ios - 进入函数时的主runloop是哪个状态:applicationDidFinishLaunching?
- flutter - 如何阻止 Flutter 生成可为空的 i18n 字符串
- javascript - 通过 JS 填充图表
- python - django ForeignKey 字段只能按类别选择
- node.js - GrpcError:操作未实现、不支持或启用?
- c++ - 对初始化变量/类成员感到困惑
- c++ - Cmake 找不到包含 /libaries (SDL2, GLEW,...)
- javascript - Vue 中类似浏览器的选项卡 - 怎么样?