声明一个map[string]map[string]...类型的变量并不理想,有没有更好的方法 snaps := map[string]map[string]map[string]map[string]string{ "distros": { "aws": { "eu-west-1": { "snap-0": "/dev/sdm", }, "eu-west-2": { "snap-1": "/dev/sdm", }, }, },}fmt.Println(snaps["distros"]["aws"]["eu-west-1"])
1 回答
忽然笑
TA贡献1806条经验 获得超5个赞
最简单的方法是使用 type map[string]interface{}。由于空接口interface{}引用任何类型,因此处理 JSON 的任意嵌套性质。
为此,您必须先将文字数据写为字符串,然后将字符串解析为 Go map。
考虑到这一点,这里是您的示例的重构:
首先:import "encoding/json",然后
snapsStr := `{
"distros": {
"aws": {
"eu-west-1" : {
"snap-0": "/dev/sdm"
},
"eu-west-2": {
"snap-1": "/dev/sdm"
}
}
}
}`
var snaps map[string]interface{}
json.Unmarshal([]byte(snapsStr), &snaps)
现在snaps如愿以偿。
这是 Go 中最通用的 JSON 数据格式,也是 Go JSON 库处理 JSON 类型的方式之一。
- 1 回答
- 0 关注
- 104 浏览
添加回答
举报
0/150
提交
取消