我正在努力使最干净的YAML数据结构成为可能(我所说的干净是指最少的无关标记(。
我试图创建的是一个sections
的列表,其中每个section
本身就是不同类型对象的列表。
在JSON中,这看起来像
{
"sections": [
[
{"p": "Words"}
],
[
{
"ul": "more words",
"p": "other"
}
]
]
}
到目前为止,这就是我在YAML中所拥有的:
sections:
-
- p: 'Test words.'
- ul:
- "Words"
- "More words"
-
- p: "Other words"
我被这些破折号弄糊涂了。
在上面的例子中,p
和ul
都需要破折号(作为名称对象的一部分(还是只需要第一个破折号
即,这在功能上是相同的吗?
sections:
-
- p: 'Test words.'
ul:
- "Words"
- "More words"
此外,后面没有内容的破折号(如小节下的第一个破折号(表示什么?
sections:
- // this dash
- p: 'Test words.'
您的JSON示例:
{
"sections": [
[
{"p": "Words"}
],
[
{
"ul": "more words",
"p": "other"
}
]
]
}
可以在YAML:中这样写
---
sections:
- - p: Words
- - p: other
ul: more words
有两个连字符(破折号(,因为它是一个嵌套序列(又名列表、数组(。
在YAML中,每个序列项都以一个连字符开头。
JSON示例也是有效的YAML,因为JSON是YAML的一个子集。YAML是作为XML的替代品而发明的,大约在JSON独立发明的同时。当YAML的发明者意识到JSON时,他们在1.2版本中修改了语法以与之兼容,但它已经支持类似于JSON的紧凑风格。
这个例子也可以这样写:
---
sections:
- [
{p: Words}
]
- [
{
ul: more words,
p: other,
}
]
更多关于嵌套序列和映射