在 YAML 中构建字典项数组?

Building an array of dictionary items in YAML?

基本上尝试在 yaml 中使用这个 json:

{
models:
 [
  { 
    model: "a"
    type: "x"
    #bunch of properties...
  },
  {
    model: "b"
    type: "y"
    #bunch of properties...
  }
 ]
}

到目前为止,这就是我所拥有的,它不起作用,因为我正在重复我的 model 键,但是通过保留 model 关键字来做到这一点的正确方法是什么?

models:
 model:
  type: "x"
  #bunch of properties...
 model:
  type: "y"
  #bunch of properties...

使用破折号开始一个新的列表元素:

models:
 - model: "a"
   type: "x"
   #bunch of properties...
 - model: "b"
   type: "y"
   #bunch of properties...

您可能已经查看 YAML 太久了,因为您在 post 中所谓的 JSON 不是,它更像是 YAML 的一半和一半 JSON。让我们跳过 JSON 不允许以 # 开头的注释这一事实,您应该引用作为键的字符串,并且应该在映射中的元素之间放置 ,

{
"models":
 [
  {
    "model": "a",
    "type": "x"
  },
  {
    "model": "b",
    "type": "y"
  }
 ]
}

是正确的 JSON 也是 YAML,因为 YAML 是 JSON 的超集。 你可以例如在此 YAML parser.

在线查看

您可以使用 ruamel.yaml.cmd(基于我的增强版 PyYAML:pip install ruamel.yaml.cmd)将其转换为您似乎更喜欢的 YAML 块样式。您可以使用其命令行实用程序将 JSON 转换为阻止 YAML(在版本 0.9.1 中您还可以强制流式):

yaml json in.json

这让你:

models:
- model: a
  type: x
- model: b
  type: y

有一些在线资源可让您执行上述操作,但与任何此类服务一样,请勿将它们用于任何重要的事情(例如信用卡号码和密码列表)。