”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何将具有已知和未知键/值对的 JSON 解析为 Go 结构?

如何将具有已知和未知键/值对的 JSON 解析为 Go 结构?

发布于2024-11-07
浏览:304

How to Parse JSON with Known and Unknown Key/Value Pairs into a Go Struct?

使用任意键/值对解组 JSON 到结构

问题

如何解析具有已知和未知键/值对的 JSON 字符串进入 Go 结构体?未知字段可以具有任何名称和值类型(字符串、布尔、float64 或 int)。

解决方案

使用已知字段和未知字段的映射切片创建一个结构体:

type Message struct {
    Known1   string `json:"known1"`
    Known2   string `json:"known2"`
    Unknowns []map[string]interface{}
}

将 JSON 字符串解组到此结构中:

json.Unmarshal([]byte(jsonMsg), &msg)

Unknowns 字段将包含一个列表表示未知键/值对的映射。

替代方案

  1. 双重解组:

    • 首先,解组到仅包含已知字段的临时结构中。
    • 然后,再次解组到 map[string]interface{} 并手动提取未知值。
  2. 解组和类型转换:

    • 解组到映射[string]接口{}。
    • 迭代映射并将值断言为适当的类型.

注意事项

所有三种解决方案都是有效的,但最简单和最优雅的是最初的基于结构的方法。它避免了额外的解组或手动类型转换的需要。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3