首页 >后端开发 >Golang >如何在 Go 中解组具有未知字段名称的 JSON?

如何在 Go 中解组具有未知字段名称的 JSON?

Linda Hamilton
Linda Hamilton原创
2024-12-11 11:28:15383浏览

How to Unmarshal JSON with Unknown Field Names in Go?

将具有未知字段名的 JSON 解组到结构中

问题:

使用以下命令解组 JSON 数据当 JSON 响应的结构一致但未知的字段名可能具有挑战性具体字段名称有所不同。

解决方案:

使用映射作为键值存储可以处理具有未知字段名称的实例。映射的值应该是一个表示 JSON 数据通用结构的结构体。

示例:

假设以下 JSON 结构:

{
    "unknown_field": {
        "known_field_1": [[1,2,3,4,5],[10,20,30,40,50],[100,200,300,400,500]],
        "known_field_2": [[11,21,31,41,51]],
        "known_field_3": [[12,22,32,42,52],[14,44,34,44,54]]
    }
}

对应的Go结构:

type mData struct {
    KnownField1 [][5]int `json:"known_field_1"`
    KnownField2 [][5]int `json:"known_field_2"`
    KnownField3 [][5]int `json:"known_field_3"`
}

解组代码:

var data map[string]mData

if err := json.Unmarshal(body, &data); err != nil {
    panic(err)
}

fmt.Println(data)
for k, v := range data {
    fmt.Println(k, v)
}

输出:

map[unknown_field:{[[1 2 3 4 5] [10 20 30 40 50] [100 200 300 400 500]] [[11 21 31 41 51]] [[12 22 32 42 52] [14 44 34 44 54]]}]
unknown_field {[[1 2 3 4 5] [10 20 30 40 50] [100 200 300 400 500]] [[11 21 31 41 51]] [[12 22 32 42 52] [14 44 34 44 54]]}

通过利用地图,代码有效地处理未知的字段名,同时仍然准确地将数据提取到已知的结构中田野。

以上是如何在 Go 中解组具有未知字段名称的 JSON?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn