yaml中允許表示三種格式,分別為常量值、對象和數組
例如:
其中#作為注釋,yaml中只有行注釋
基本格式要求:
1.大小寫敏感;2.使用縮進代表層級關系;
3.縮進只能使用空格,不能使用tab鍵,不要求空格個數,只需要相同層級左對齊(一般2或4個空格)。
對象:
使用冒號代表,格式為key: value。冒號后要有一個空格:
可使用縮進表示層級關系:
yaml中還支持流式(flow)語法表示對象,比如上面例子可寫為:
較為復雜的對象格式,可以使用問號加一個空格代表一個復雜的key,配合一個冒號加一個空格代表一個value:
意思即對象的屬性是一個數組[complexkey1, complexkey2],對應的值也是一個數組[complexvalue1, complexvalue2]
使用流式語法即為[complexkey1,complexkey2]:[complexvalue1,complexvalue2]
數組
使用一個短橫線加一個空格表示一個數組項:
當然也可以有這樣的寫法:
可以簡單的理解為[[java,LOL]]
一個相對復雜的例子:
意思是companies屬性是一個數組,每一個數組元素又是由id、name、price三個屬性構成;
使用流式語法表示為:
常量:
yaml中提供了多種常量結構,包括整數、浮點數、字符串、null、日期、布爾值、時間。
使用+代表時區
特殊符號
1. --- yaml可以在同一個文件中,使用---表示一個文檔的開始:
代表定義了兩個profile,一個是development,一個是production;也常使用---來分割不同的內容,比如記錄日志:
2. ...和---配合使用,在一個配置文件中代表一個文件的結束:
相當於在一個yaml中連續寫了兩個yaml配置項
3. !!yaml中使用!!做類型強行轉換:
相當於把數字和布爾值類型強轉換為字符串
將數組解析為set集合,簡單理解,轉化的內容就是[{Mark McGwire: 65}, {Sammy Sosa: 63}, {Ken Griffy: 58}],去掉重復。
4. >在字符串中折疊換行, |保留換行,這兩個符號是yaml中字符串經常使用的符號,比如:
那么,accomplishment的結果為:將換行符轉化成了空格,需要主意的是,每行的文本錢一定要有一個空格
stats的結果是:
常見|符號多用於yaml中配置html片段:
5.引用。重復的內容在yaml中可以使用&符號來完成錨點定義,使用*來完成錨點引用,例如:
可以看到,在hr中,使用&SS為Sammy Sosa設置了一個錨點引用,名稱為SS,在rbi中,使用*SS來引用錨點:
我們也可以這樣定義:
注意:不能獨立的定義錨點,比如不能直接這樣寫: &SS Sammy Sosa;另外,錨點能夠定義更復雜的內容,比如:
那么hr相當於引用了default的數組,注意,hr: *default要寫在同一行。
6.合並內容。主要和錨點配合使用,可以將一個錨點內容直接合並到一個對象中,例如:
在merge中定義了四個錨點,分別在sample中使用。
sample1中,<<: *CENTER意思是引用{x: 1, y:2},並且合並到sample1中,那么合並的結果為:sample1={r=10, y=2,x=1}
sample2中,<<: [*CENTER, *BIG]意思是聯合引用{x:1, y:2}和{R: 10},並且合並到sample2中,那么結果為sample2={other=haha,x=1,y=2}
sample3中,引入了*CENTER,*BIG,還使用了r: 100覆蓋了引入的r:10,所以sample3值為sample3={r=100, y=2, x=1}