为了账号安全,请及时绑定邮箱和手机立即绑定

有没有更好的方法来声明json变量

有没有更好的方法来声明json变量

Go
largeQ 2023-05-04 17:35:59
声明一个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 类型的方式之一。

查看完整回答
反对 回复 2023-05-04
  • 1 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信