yaml - YAML 中的这个数据结构是什么?
问题描述
我试图使最干净的 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,
}
]
推荐阅读
- c - 如何制作可以不带参数调用的 __VA_ARGS__ 宏?
- swift - 通过对象从数组中删除
- python - 在循环中保存多个线性回归模型
- c - Execlp 没有正确变异
- javascript - 当basePath不是root时如何在Next.js中正确设置动态路由?
- r - how to assign a value based on condition in R?
- android - 错误:引起:groovy.lang.MissingPropertyException:无法获取未知属性“navigationVersion”
- c# - 在 setter 中对传递的值绑定事件
- php - 如何查看某人在某些日子有空?
- r - tidyverse 汇总多列但将结果显示为行