使用Go保留YAML地图的顺序

时间:2015-11-10 20:45:17

标签: go yaml

我正在试图弄清楚如何在Go中读取YAML文件,同时保留YAML文档中订购的键的顺序。我见过的大多数例子都涉及对键进行排序,但在我的情况下这不起作用。此外,YAML是任意结构的(键是用户定义的,值是字符串和字符串列表的混合,也是用户定义的),这使问题复杂化。

go-yaml.v2似乎做了我想做的事(http://blog.labix.org/2014/09/22/announcing-yaml-v2-for-go),但我找不到任何关于如何使用订购功能的例子。这一点,以及对Go来说是全新的,让我非常难过。

如果需要,我很乐意提供我正在尝试解析的YAML示例。

1 个答案:

答案 0 :(得分:7)

你走了:

var data = `
  a: Easy!
  b:
  c: 2
  d: [3, 4]
`
m := yaml.MapSlice{}
err := yaml.Unmarshal([]byte(data), &m)
if err != nil {
    log.Fatalf("error: %v", err)
}
fmt.Printf("--- m:\n%v\n\n", m)