0

我有 json 文件的文件夹,例如:

  • 架构文件1.json 文件2.json

我正在尝试迭代并从每个文件中获取所有数据map[string]interface{}

我成功地获取了这种类型的数据。但是当我将它存储到 viper 配置时,它更改为map[json:map[]]

这是剪辑

func iterateFiles(f string) {

    pwd, _ := os.Getwd()
    path := pwd + "/schema/"

    if f != path {

        file, err := ioutil.ReadFile(f)
        if err != nil {
            fmt.Println("error reading file: " + f)
        }

        var result map[string]interface{}
        json.Unmarshal([]byte(file), &result)

        _, filename := filepath.Split(f)

        fmt.Println(result)

        viper.Set(filename, result)
    }
}

fmt.Println(result) 返回我:

map[callback_url:[required url] next_date:[required]]
map[ref:[required string]]
map[ref:[required string]]

但是当我尝试从 viper 获取地图时,我收到:

result := viper.GetStringMap(action)

fmt.Println(result)

map[json:map[callback_url:[required url] next_date:[required]]]

有人可以指出我正确的方向,以便我可以接收我存储的类型吗?

4

1 回答 1

0

像这样解决它

r := viper.GetStringMap(action)
result := r["json"].(map[string]interface{})

如果您知道更有效的方法,请告诉我

于 2020-10-26T16:31:45.197 回答