codecamp

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



YAML 块标量头
YAML 块样式
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }