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" ]
-