首页 > 解决方案 > 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
}

如何解析

标签: jsongobuffer

解决方案


您可以做的一种方法是:

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())

当然,您必须在代码中添加错误和边界检查。


推荐阅读