在 Go 中,当数据使用 key 包装在对象中时,可以将 JSON 数据部分解组为 Map -值对。这样可以轻松识别每个键所保存的值的类型。
要实现此目的,请使用encoding/json 包并将其解组为map[string]json.RawMessage。 json.RawMessage 类型在进一步解析之前捕获底层 JSON 数据。
var objmap map[string]json.RawMessage err := json.Unmarshal(data, &objmap)
一旦获得映射,您就可以根据其值继续解析每个键的值已知类型。
对于示例 JSON:
{ "sendMsg":{"user":"ANisus","msg":"Trying to send a message"}, "say":"Hello" }
您可以解析sendMsg 并如下所示:
type sendMsg struct { User string Msg string } var s sendMsg err = json.Unmarshal(objmap["sendMsg"], &s) 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中文网其他相关文章!