YAML - 流样式
YAML 中的流样式可以被认为是 JSON 的自然扩展,用于覆盖折叠内容行,以实现更好的可读性,它使用锚点和别名来创建对象实例。在本章中,我们将重点介绍以下概念的流表示 −
- 别名节点
- 空节点
- 流标量样式
- 流集合样式
- 流节点
别名节点的示例如下所示 −
%YAML 1.2
---
!!map {
? !!str "First occurrence"
: &A !!str "Foo",
? !!str "Override anchor"
: &B !!str "Bar",
? !!str "Second occurrence"
: *A,
? !!str "Reuse anchor"
: *B,
}
上面代码的 JSON 输出如下所示 −
{
"First occurrence": "Foo",
"Second occurrence": "Foo",
"Override anchor": "Bar",
"Reuse anchor": "Bar"
}
内容为空的节点被视为空节点。以下示例显示了这一点 −
%YAML 1.2
---
!!map {
? !!str "foo" : !!str "",
? !!str "" : !!str "bar",
}
JSON 中空节点的输出表示如下 −
{
"": "bar",
"foo": ""
}
流标量样式包括双引号、单引号和普通类型。下面给出了相同的基本示例 −
%YAML 1.2
---
!!map {
? !!str "implicit block key"
: !!seq [
!!map {
? !!str "implicit flow key"
: !!str "value",
}
]
}
上面给出的示例的 JSON 格式的输出如下所示 −
{
"implicit block key": [
{
"implicit flow key": "value"
}
]
}
YAML 中的流集合嵌套在另一个流集合中的块集合中。流集合条目以逗号 (,) 指示符结尾。以下示例详细说明了流集合块 −
%YAML 1.2
---
!!seq [
!!seq [
!!str "one",
!!str "two",
],
!!seq [
!!str "three",
!!str "four",
],
]
JSON 格式的流收集输出如下所示 −
[
[
"one",
"two"
],
[
"three",
"four"
]
]
像 JSON 这样的流样式包括开始和结束指示符。唯一没有任何属性的流样式是纯标量。
%YAML 1.2
---
!!seq [
!!seq [ !!str "a", !!str "b" ],
!!map { ? !!str "a" : !!str "b" },
!!str "a",
!!str "b",
!!str "c",]
上述代码的 JSON 格式输出如下 −
[
[
"a",
"b"
],
{
"a": "b"
},
"a",
"b",
"c"
]

