是否有流行的简化版YAML格式?

11

我喜欢 YAML。

等等,让我先解释一下。我更喜欢这样的 YAML,比 JSON 更容易阅读:

Projects:
  C/C++ Libraries:
  - libyaml       # "C" Fast YAML 1.1
  - Syck          # (dated) "C" YAML 1.0
  - yaml-cpp      # C++ YAML 1.2 implementation
  Ruby:
  - psych         # libyaml wrapper (in Ruby core for 1.9.2)
  - RbYaml        # YAML 1.1 (PyYaml Port)
  - yaml4r        # YAML 1.0, standard library syck binding
  ...

我也喜欢使用YAML锚点和引用,有时候希望JSON也能支持它们。
但是我希望我们大多数人都能同意以下内容不太容易阅读(我知道这个例子是教学性质的,但重点是因为它是有效的YAML,与你合作的人可能会使用这些功能来污染你的数据):
!!map {
  ? !!str "sequence"
  : !!seq [ !!str "one", !!str "two" ],
  ? !!str "mapping"
  : !!map {
    ? !!str "sky" : !!str "blue",
    ? !!str "sea" : !!str "green",
  },
}

我很失望在进行初步的Google搜索时没有找到任何普遍性的政变来标准化简化的YAML子集。

有人知道有吗?


2
StrictYAML并不完全是YAML的子集(它违反了规范的某些部分,原因在其文档中有很好的解释),它仅适用于Python,并且是一个库而不是实际的语言规范;即使如此,它可能是最接近的一个(假设您真的指的是YAML子集,而不是像TOML等替代语法)。 - Tgr
1个回答

3
有许多这样的子集。几乎每个YAML库都通过往返转换(将YAML加载到内部数据并将数据序列化回YAML)的格式隐式地定义了一个子集。
您经常可以影响这些子集,但它们倾向于具有对大型集合具有块结构和对较小集合具有流样式的有用默认值(每个库开发人员根据可读性考虑)。
我认为应对不良编辑器的方法是通过ruamel.yaml解析器附带的yaml实用程序对代码进行往返转换,然后使用它。如果您不喜欢它强制执行的子集,通过实验更改其序列化器设置应该相对容易。在将任何YAML文件存储/更新到版本控制系统之前进行此类“规范化”是必须的。

哦,太酷了,这么简单,我甚至没有想到像这样来回转换! - Andy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接