YAML 中的多行键

kim*_*imh 2 yaml

是否可以有这样的多行键?

mykey:
  - >
    key
    one:
    keytwo: val
Run Code Online (Sandbox Code Playgroud)

其中 keyone 被视为一把钥匙。我想解析 yaml 以产生:

{ mykey: [ { keyone: { keytwo: val } } ] }
Run Code Online (Sandbox Code Playgroud)

Jor*_*ing 6

您可以在 YAML 中使用多行键,但与您描述的方式不同。在YAML映射可以通过前缀与键分裂的键和值到单独的行?,并与值:,如下所示:

? foo
: bar
Run Code Online (Sandbox Code Playgroud)

以上将产生一个类似于{ "foo": "bar" }JSON的数据结构。YAML 规范将其称为显式键(而通常的foo: bar样式是隐式)。使用显式样式时,键可以是任何YAML 数据结构,包括多行标量:

mykey:
  - ? key
      one
    : keytwo: val
Run Code Online (Sandbox Code Playgroud)

...但是,就像 YAML 中的所有多行标量一样,即使行合并,每行的内容之间仍会保留一个空格,因此上述将产生类似于以下 JSON 的数据结构:

{ "mykey":
  [ { "key one":
      { "keytwo": "val" }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

所以你最终得到了key one而不是keyone,这不是你想要的。但它是您最接近 YAML 的方法。