yaml 兼容 json,至今已發展至 1.2版。支持N多種編程語言。官網:http://www.yaml.org/
格式在線校驗:http://nodeca.github.io/js-yaml/
下面就通過一篇YAML文件,來學習YAML:
%yaml 1.2
%TAG !tagRef! tag:yaml.org,2002: # %TAG !name! tag:url
--- #塊分隔符。既是指令聲明的結束符,又是文檔塊的分割標記
yaml online study: http://nodeca.github.io/js-yaml/ # 單行表示時,在 : 后面得有空格。這個是yaml學習校驗的網站。可以在這里進行測試學習
basic structures: # 折行表示時,在 : 后面則不必有空格
indent style: 文檔的結構,由縮進來決定。為了保證可維護性,tab鍵不能用作縮進,主要因為不同操作系統,對tab處理不同。
separation space: 空格是字符 分隔 符(包括tab)
comment: 注釋。使用 # 來作注釋
tag: # 標記,可以分為全局tag,和Local tag
- global : global 可以被其他的 yaml引用,且要保證唯一性。采用url schema,用於定位全局標簽的。類似於xml namespace.
- local : # local不會被其他yaml使用,也不需要保證唯一性。local tag一般采用 ! 作為標示符
primary tag handle: 使用! 作為一級標簽處理
secondary tag handle : # 使用!! 作為二級標簽處理。通常是指定數據類型
!!map {
? !!str "First occurrence"
: &A !!str "Value", # 聲明一個anchor A
? !!str "Second occurrence"
: *A, # use the anchor A
}
named tag handle : #需要使用 %TAG 來定義的。the follow is a named tag
examples: {
!tagRef!str foo bar : url # 這里引用了在文檔開始定義的命名標簽
}
directive:
- yaml : yaml指令用來指定當前文檔的YAML版本。它的格式是 %yaml $version。該指令放在文件首行,第二行應該是塊分隔符。
- tag: 參考上面的tag說明
datatype:
literal : # 一般字面量
string : 字符串,可以使用 !!str 來限定數據類型
int : 整數,可以使用 !!int 來限定數據類型
float : 浮點數,可以使用 !!float 來限定數據類型
bool : 布爾值,可以使用 !!bool 來限定數據類型。參考http://yaml.org/type/bool.html
null: 空值。可以使用!!null來限定數據類型
timestamp: 時間戳。可以使用!!timestamp來限定數據類型
binary: Base64的字符串表示。可以使用!!可以使用!!binary來限定數據類型來限定數據類型。參考http://yaml.org/type/binary.html
collection : #集合
sequence: #序列,也稱為有序集合。
- 張三
- 李四
- 王五
set: # 集合。可以將其理解為java中的 hashMap,key不為null,value是null.
? hello
? yaml set
map: # Unordered set of key: value pairs.
cloc2:
Clark : Evans,
Brian : Ingerson
Oren : Ben-Kiki
omap: # ordered set of key: value pairs.
cloc2:
Clark : Evans,
Brian : Ingerson
Oren : Ben-Kiki
textBlock: #文本塊
block1: |
absdfas
sdfasdf
asdfas
block2: >
absdfas
sdfasdf
asdfas
block3: "
absdfas
sdfasdf\n
asdfas"
block4: '
absdfas
sdfasdf\d
asdfas'
anchor: # 錨點
a: !!str &a1 b # 字符串b 處加了錨點a1
c: *a1 # 引用錨點a1
...
