Как загрузить список карт с помощью viper?
У меня есть следующий конфиг, который я хочу загрузить с Viper:
artist:
name: The Beatles
albums:
- name: The White Album
year: 1968
- name: Abbey Road
year: 1969
Я не могу понять, как загрузить список карт. Я думаю, мне нужно разархивировать только этот ключ, но этот код не работает:
type Album struct {
Name string
Year int
}
type Artist struct {
Name string
Albums []Album
}
var artist Artist
viper.UnmarshalKey("artists", &artist)
Что мне не хватает?
1 ответ
Решение
Вы уверены, что ключ artists
в ямле? Вы хотите поставить artist
?
Рабочий пример:
str := []byte(`artist:
name: The Beatles
albums:
- name: The White Album
year: 1968
- name: Abbey Road
year: 1969
`)
viper.SetConfigType("yaml")
viper.ReadConfig(bytes.NewBuffer(str))
var artist Artist
err := viper.UnmarshalKey("artist", &artist)
fmt.Printf("%v, %#v\n", err, artist)
Выход:
<nil>, main.Artist{Name:"The Beatles", Albums:[]main.Album{main.Album{Name:"The White Album", Year:1968}, main.Album{Name:"Abbey Road", Year:1969}}}