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