如何使用 viper 加载地图列表?
How to load a list of maps with 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)
我错过了什么?
您确定 yaml 中的密钥是 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}}}
我想用 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)
我错过了什么?
您确定 yaml 中的密钥是 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}}}