首页 >后端开发 >Golang >如何将 JSON 数据部分解组到 Go Map 中?

如何将 JSON 数据部分解组到 Go Map 中?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-22 15:51:11469浏览

How to Partially Unmarshal JSON Data into a Go Map?

如何在 Go 中将 JSON 部分解组到映射中

在 Go 中解组 JSON 数据可能很简单,但在处理嵌套时会出现挑战其键指示数据类型的对象。为了解决这个问题,您可以利用“encoding/json”包。

在提供的代码中,您尝试将 JSON 数据映射到 map[string][]byte,从而有效地将其转换为密钥- 字符串和原始 JSON 的值对。但是,json.MapObject 函数不存在,使得该解决方案不可行。

相反,您可以利用 map[string]json.RawMessage 来实现您的目标。 RawMessage 是一种不透明类型,保存未解析的 JSON。使用这种方法,下面的代码将提供的 JSON 数据解组到 objmap 变量中:

var objmap map[string]json.RawMessage
err := json.Unmarshal(data, &objmap)

现在,您可以访问 objmap 中的各个键值对以进一步解析 JSON 数据。例如,要解析“sendMsg”值:

var s sendMsg
err = json.Unmarshal(objmap["sendMsg"], &s)

同样,您可以将“say”值解析为字符串:

var str string
err = json.Unmarshal(objmap["say"], &str)

注意: 请记住导出 sendMsg 结构中的变量以启用正确的解组。例如:

type sendMsg struct {
    User string
    Msg  string
}

您可以在 https://play.golang.org/p/OrIjvqIsi4-.

找到一个工作示例。

以上是如何将 JSON 数据部分解组到 Go Map 中?的详细内容。更多信息请关注PHP中文网其他相关文章!

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