Как разобрать конфигурацию viper для структурирования с помощью символа тире
У меня есть следующий файл конфигурации, определенный как файл Toml:
[staging]
project-id = "projectId"
cluster-name = "cluster"
zone = "asia-southeast1-a"
Тогда у меня есть эта структура
type ConfigureOpts struct {
GCPProjectID string `json:"project-id"`
ClusterName string `json:"cluster-name"`
Zone string `json:"zone"`
}
Обратите внимание, что у меня есть другой формат имени поля ConfigureOpts по сравнению с тем, который определен в файле конфигурации.
Я пробовал этот код, но не смог
test_opts := ConfigureOpts{}
fmt.Printf("viper.staging value %+v\n", viper.GetStringMap("staging"))
viper.UnmarshalKey("staging", &test_opts)
fmt.Printf("testUnmarshall %+v\n", test_opts)
Вот вывод
viper.staging value map[zone:asia-southeast1-a project-id:projectId cluster-name:cluster]
testUnmarshall {GCPProjectID: ClusterName: Zone:asia-southeast1-a AuthMode: AuthServiceAccount:}
1 ответ
Решение
Я получил ответ на основе этой ссылки https://github.com/spf13/viper/issues/258
Таким образом, решение было бы изменить любой json:
отметить в ConfigureOpts
структура для mapstructure:
,
Так что это решит проблему. `` `
type ConfigureOpts struct {
GCPProjectID string `mapstructure:"project-id"`
ClusterName string `mapstructure:"cluster-name"`
Zone string `mapstructure:"zone"`
}
`` `