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

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

DDD
发布: 2024-12-26 03:32:09
原创
316 人浏览过

How to Unmarshal JSON with Unknown Field Names in Go Using a Map?

使用映射解组具有未知字段名的 JSON

解组具有未知字段名的 JSON 会带来挑战,尤其是当对象结构保持一致时。这个问题解决了如何处理此类场景,并提供了使用 Golang 映射的解决方案。

问题:

POST 请求提供的 JSON 响应包含一个带有未知的名字。目标是将此 JSON 解组为结构体,同时保留已知字段的一致结构。

解决方案:

第 1 步:创建一个结构体已知字段

定义一个名为 mData 的结构体,它表示已知字段中的一致字段JSON:

type mData struct {
    KnownField1 [][5]int `json:"known_field_1"`
    KnownField2 [][5]int `json:"known_field_2"`
    KnownField3 [][5]int `json:"known_field_3"`
}
登录后复制

第 2 步:使用映射来处理未知字段名

创建一个名为 data 的映射,将未知字段名存储为键和实例mData 作为值:

var data map[string]mData
登录后复制

第 3 步:将 JSON 解组为Map

利用 json.Unmarshal 将 JSON 正文绑定到地图:

if err := json.Unmarshal(body, &data); err != nil {
    panic(err)
}
登录后复制

第 4 步:打印结果

地图现在将包含未知的字段名称和关联的 mData 实例。您可以使用以下代码访问这些值:

for k, v := range data {
    fmt.Println(k, v)
}
登录后复制

此方法允许您使用未知字段名解组 JSON,同时维护已知字段的结构。所提供代码的输出将是:

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 中使用 Map 解组具有未知字段名称的 JSON?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板