viper изменение типа данных на множестве

#go #viper-go

#Вперед #viper-go

Вопрос:

У меня есть папка с файлами json, такими как:

  • файл схемы 1.json file2.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), amp;result)

        _, filename := filepath.Split(f)

        fmt.Println(result)

        viper.Set(filename, result)
    }
}
  

fmt.Println(результат) возвращает меня:

 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]]]
  

Может ли кто-нибудь указать мне правильное направление, чтобы я мог получить тип, который я сохранил?

Ответ №1:

решил это так

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

если вы знаете более эффективный способ, пожалуйста, дайте мне знать