猿问

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

声明一个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"])


largeQ
浏览 105回答 1
1回答

忽然笑

最简单的方法是使用 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 类型的方式之一。
随时随地看视频慕课网APP

相关分类

Go
我要回答