【问题标题】:Preserving order of YAML maps using Go使用 Go 保留 YAML 映射的顺序
【发布时间】:2016-02-11 21:04:40
【问题描述】:

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

go-yaml.v2 似乎可以满足我的要求 (http://blog.labix.org/2014/09/22/announcing-yaml-v2-for-go),但我找不到任何有关如何使用排序功能的示例。这一点,加上对 Go 完全陌生,让我很困惑。

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

【问题讨论】:

  • 只需使用该包中的MapSlice 类型,而不是您反序列化到的数据结构中的map

标签: go yaml


【解决方案1】:

给你:

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)

【讨论】:

  • 很好的例子——但在大多数情况下我们知道under类型。所以我想保持map[string]*MyType 的顺序有没有简单的解决方案? @hobbs
猜你喜欢
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
  • 2010-12-26
  • 2018-05-03
相关资源
最近更新 更多