YAML中的多行键

时间:2016-01-29 18:36:34

标签: yaml

是否可以使用这样的多行密钥?

mykey:
  - >
    key
    one:
    keytwo: val

其中keyone被视为一个键。我想解析yaml以产生:

{ mykey: [ { keyone: { keytwo: val } } ] }

1 个答案:

答案 0 :(得分:4)

您可以在YAML中使用多行密钥,但不能完全按照您的描述进行操作。在YAML映射中,您可以将密钥和值拆分为单独的行,方法是将密钥加上?,将值加:,如下所示:

? foo
: bar

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

mykey:
  - ? key
      one
    : keytwo: val

...但是,和YAML中的所有多行标量一样,即使合并了行,每行的内容之间也会保留一个空格,因此上面的结果会产生如下JSON的数据结构: / p>

{ "mykey":
  [ { "key one":
      { "keytwo": "val" }
    }
  ]
}

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