在 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...
90981 次浏览

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

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 的超集。 例如,你可以在这个 YAML 解析器在线检查。

您可以使用 Uamel.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

有一些在线资源可以让你做到以上几点,但是和其他类似的服务一样,不要把它们用在任何重要的事情上(比如信用卡号码和密码列表)。