为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Golang 中使用动态键解析 YAML

如何在 Golang 中使用动态键解析 YAML

Go
潇湘沐 2021-11-01 16:20:53
我正在尝试使用 Go 解析 YAML 文件。问题是 YAML 文件中的键可能并不总是相同的。这是为了进行 API 版本控制,以便用户可以定义他们支持的版本。例如 V1、V2、V3 等。它们不需要按顺序排列并且可以省略它们不支持的版本,即 V0、V2、V5 等。package mainimport (  "fmt"  "gopkg.in/yaml.v2")var data = `---development:  skip-header-validation: true  V1:    current: "1.0.0"    mime_types:      - application/vnd.company.jk.identity+json;      - application/vnd.company.jk.user+json;      - application/vnd.company.jk.role+json;      - application/vnd.company.jk.scope+json;      - application/vnd.company.jk.test+json;    skip-mime-type-validation: true    skip-version-validation: true  V2:    current: "2.0.0"    mime_types:      - application/vnd.company.jk.identity+json;      - application/vnd.company.jk.user+json;      - application/vnd.company.jk.role+json;      - application/vnd.company.jk.scope+json;      - application/vnd.company.jk.test+json;`type MajorVersion struct {  Current                 string    `yaml:"current"`  MimeTypes               []string  `yaml:"mime_types"`  SkipVersionValidation   bool      `yaml:"skip-version-validation"`  SkipMimeTypeValidation  bool      `yaml:"skip-mime-type-validation"`}type Environment struct {  SkipHeaderValidation  bool        `yaml:"skip-header-validation"`  Version               map[string]MajorVersion}func main() {  e := Environment{}  yaml.Unmarshal([]byte(data), &e)  fmt.Println(e)}我看到这里问了一个类似的问题这是在顶层,我还没有完全弄清楚如何从结构内部做到这一点。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 281 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信