我正在试图弄清楚如何在Go中读取YAML文件,同时保留YAML文档中订购的键的顺序。我见过的大多数例子都涉及对键进行排序,但在我的情况下这不起作用。此外,YAML是任意结构的(键是用户定义的,值是字符串和字符串列表的混合,也是用户定义的),这使问题复杂化。
go-yaml.v2似乎做了我想做的事(http://blog.labix.org/2014/09/22/announcing-yaml-v2-for-go),但我找不到任何关于如何使用订购功能的例子。这一点,以及对Go来说是全新的,让我非常难过。
如果需要,我很乐意提供我正在尝试解析的YAML示例。
答案 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)