首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >golang json如何解码具有不同元素数据类型的二维数组?

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

Stack Overflow用户
提问于 2019-09-06 11:40:53
回答 2查看 60关注 0票数 0

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

go版本go1.12.9 darwin/amd64

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

代码语言:javascript
运行
复制
[
    [
        0,
        0,
        297,
        153,
        78,
        [
            [1871, 1547, ...],
            [...],
            [...]
        ]
    ]
    ...
]

需要解析为以下结构

代码语言:javascript
运行
复制
type HeartBeat struct {
    Template uint8
    Calssify uint8
    Index    uint32
    Tr       uint16
    Hr       uint16
    Feature  [3][20]int16
}

如何解析

EN

回答 2

Stack Overflow用户

发布于 2019-09-06 12:08:47

可以这样做的一种方法是:

代码语言:javascript
运行
复制
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())

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

票数 0
EN

Stack Overflow用户

发布于 2019-09-06 16:30:36

我已经解决了

代码语言:javascript
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57815418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档