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

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

DDD
DDD原创
2024-12-26 03:32:09313浏览

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中文网其他相关文章!

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