在YAML中构建字典项数组?

在YAML中构建字典项数组?,yaml,pyyaml,Yaml,Pyyaml,基本上,尝试在yaml中使用以下json实现一些功能: { models: [ { model: "a" type: "x" #bunch of properties... }, { model: "b" type: "y" #bunch of properties... } ] } 到目前为止,这就是我所拥有的,它不起作用,因为我在重复我的模型关键字,但保留该模型关键字有什么合适的方法 models: model:

基本上,尝试在yaml中使用以下json实现一些功能:

{
models:
 [
  { 
    model: "a"
    type: "x"
    #bunch of properties...
  },
  {
    model: "b"
    type: "y"
    #bunch of properties...
  }
 ]
}
到目前为止,这就是我所拥有的,它不起作用,因为我在重复我的
模型
关键字,但保留该
模型
关键字有什么合适的方法

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太久了,因为您在文章中称之为JSON的内容不是,而是YAML和JSON的一半。让我们跳过JSON不允许以
#
开头的注释这一事实,您应该引用作为键的字符串,并且应该在映射中的元素之间放置

{
"models":
 [
  {
    "model": "a",
    "type": "x"
  },
  {
    "model": "b",
    "type": "y"
  }
 ]
}
这是正确的JSON,也是正确的YAML,因为YAML是JSON的超集。 例如,您可以在此处在线检查

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

这让你:

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

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

您是否尝试过将JSON代码加载到本机数据结构(使用您选择的语言)中,然后使用YAML库序列化该结构?总是更容易让机器为您完成工作。:)这确实是更好的答案。我有点不好意思让我的答案被接受。谢谢,但是看看投票数,很明显你的答案符合需要,而我的答案不符合。我把它归结为“人们想要什么”和“人们需要什么”两分法。您在这里提出的要点很重要——使用JQ之类的工具生成YAML,然后将其转换为块样式(如果他们喜欢使用您链接的工具)的人将拥有比尝试手动生成文本以适合示例的人更健壮的解决方案。
models:
- model: a
  type: x
- model: b
  type: y