如何将蝰蛇配置解散为带有破折号字符的结构



我将以下配置文件定义为 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 %+vn", viper.GetStringMap("staging"))
viper.UnmarshalKey("staging", &test_opts)
fmt.Printf("testUnmarshall %+vn", 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:}

我根据这个参考得到了答案 https://github.com/spf13/viper/issues/258

因此,解决方案是将结构中的任何json:标签更改为mapstructure:ConfigureOpts

所以这将解决问题。

type ConfigureOpts struct {
GCPProjectID       string `mapstructure:"project-id"`
ClusterName        string `mapstructure:"cluster-name"`
Zone               string `mapstructure:"zone"`
}

相关内容

  • 没有找到相关文章

最新更新