将 []uint8/[]byte 转换为哈希表 GoLang

3

我的服务器发送一个JSON响应,其格式如下所示:

{"SortAs": "SGML","GlossTerm": "Standard Generalized Markup Language","Acronym": "SGML","Abbrev": "ISO 8879:1986"}

但是我的Go程序将其作为类型[]uint8接收。此外,从服务器发送的JSON大小不是固定的,它会变化。我应该如何将其转换成包含键/值对的哈希表?


所以你的JSON响应是一个键值对,你想知道如何将其转换为哈希集/字典/映射? - Simon Whitehead
@SimonWhitehead:是的,那是我的目标! - Karthic Rao
既然你的重复问题已经消失了...编辑这个问题并包含相关信息。 - Simon Whitehead
@SimonWhitehead,编辑完成。 - Karthic Rao
2
http://blog.golang.org/json-and-go - thwd
1个回答

5
请注意,byteuint8的别名。话虽如此,您需要的是一个简单的json解析器
js := []byte(`{"SortAs": "SGML","GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML","Abbrev": "ISO 8879:1986"}`)

m := map[string]interface{}{}
if err := json.Unmarshal(js, &m); err != nil {
    panic(err)
}
fmt.Printf("%q",m)

输出(已包装):

map["SortAs":"SGML" "GlossTerm":"Standard Generalized Markup Language"
    "Acronym":"SGML" "Abbrev":"ISO 8879:1986"]

请在Go Playground上尝试。


获取以下错误信息:"在127.0.0.1:33514上服务时发生恐慌:无法将对象解组为Go类型为字符串的值 goroutine 6 [运行中]:" - Karthic Rao
1
@KarthicRao 你的输入 JSON 包含除了 string 之外的其他类型,例如列表或嵌套结构体。请使用 map[string]interface{} 类型的映射。 - icza
完美运行。谢谢 :) - Karthic Rao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接