#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{})
если вы знаете более эффективный способ, пожалуйста, дайте мне знать