YAML應(yīng)用

YAML 的定義是:“YAML Ain ’ t a Markup Language”,或者“Yet Another Markup Language”。

特點(diǎn)

  • YAML 的數(shù)據(jù)組織主要依靠的是空白,縮進(jìn),分行等結(jié)構(gòu),可讀性好。
  • YAML 實(shí)現(xiàn)簡(jiǎn)單,解析成本很低,和腳本語(yǔ)言的交互性好。
  • YAML 很容易就可以插入另一個(gè) YAML 文件,甚至其他類(lèi)型的文件,包括 XML, SDL, JSON 等。
  • YAML 使用實(shí)現(xiàn)語(yǔ)言的數(shù)據(jù)類(lèi)型。
  • YAML 可以基于流來(lái)處理;
  • YAML 表達(dá)能力強(qiáng),擴(kuò)展性好。

說(shuō)明

YAML百度百科
YAML官網(wǎng)

基礎(chǔ)

  • 使用空白字符(不能使用Tab)分層,同層元素左側(cè)對(duì)齊;
  • 用“-”來(lái)表示一些序列的項(xiàng)(Sequence);
  • 用“:”來(lái)表示一對(duì)項(xiàng)目(Map)里的欄目(Key)和其相應(yīng)的值(Value);
  • 單行注解由“#”字號(hào)開(kāi)始,可以出現(xiàn)在行中任何位置;
  • 字符串一般不使用引號(hào),但必要的時(shí)候可以用引號(hào)框住;
  • YAML也有用來(lái)描述好幾行相同結(jié)構(gòu)的數(shù)據(jù)的縮寫(xiě)語(yǔ)法,數(shù)組用“[]”包括起來(lái),hash用“{}”來(lái)包括。

其它

  • YAML使用可打印的Unicode字符,可使用UTF-8或UTF-16
  • 使用雙引號(hào)表示字串時(shí),可用倒斜線(\)進(jìn)行特殊字符轉(zhuǎn)義
  • 區(qū)塊的字串用縮排和修飾詞(非必要)來(lái)和其他資料分隔,有新行保留(使用符號(hào)<kbd>|</kbd>)或新行折疊(使用符號(hào)<kbd>></kbd>)兩種方式
  • 在單一檔案中,可用連續(xù)三個(gè)連字號(hào)(---)區(qū)分多個(gè)檔案
  • 可選擇性的連續(xù)三個(gè)點(diǎn)號(hào)(...)用來(lái)表示檔案結(jié)尾(在流式傳輸時(shí)非常有用,不需要關(guān)閉流即可知道到達(dá)結(jié)尾處)
  • 重復(fù)的內(nèi)容可使從參考標(biāo)記星號(hào) (*)復(fù)制到錨點(diǎn)標(biāo)記(&)
  • 指定格式可以使用兩個(gè)驚嘆號(hào) ( !! ),后面接上名稱
  • 允許在文件中加入選擇性的空行,以增加可讀性
  • 在縮排中空白字符的數(shù)目并不是非常重要,只要相同階層的元素左側(cè)對(duì)齊就可以了

實(shí)例

簡(jiǎn)單實(shí)例

John.yaml

name: John Smith
age: 37
spouse:
    name: Jane Smith
    age: 25
children:
    -  name: Jimmy Smith
       age: 15
    -  name: Jenny Smith
       age: 12

John今年37歲,有一個(gè)幸福的四口之家。兩個(gè)孩子Jimmy 和Jenny活潑可愛(ài)。妻子Jane年輕美貌。
也可縮寫(xiě)為:

name: John Smith
age: 37
spouse: {name: Jane Smith, age: 25}
children: [{name: Jimmy Smith, age: 15}, {name: Jenny Smith, age: 12}]

用 YAML 表達(dá)的一個(gè)購(gòu)物發(fā)票

  --- !clarkevans.com/^invoice 
  invoice: 34843 
  date : 2001-01-23 
  bill-to: &id001 
    given : Chris 
    family : Dumars 
    address: 
    lines: | 
    458 Walkman Dr. 
    Suite #292 
    city : Royal Oak 
    state : MI 
    postal : 48046 
  ship-to: *id001 
  product: 
    - sku : BL394D 
    quantity : 4 
    description : Basketball 
    price : 450.00 
    - sku : BL4438H 
    quantity : 1 
    description : Super Hoop 
    price : 2392.00 
  tax : 251.42 
  total: 4443.52 
  comments: > 
    Late afternoon is best. 
    Backup contact is Nancy 
    Billsmer @ 338-4338.

比較

JSON

JSON的語(yǔ)法是YAML1.2版的子集,同時(shí)非常接近YAML1.0與1.1版的子集,因此大部分的JSON文件都可以被YAML的剖析器剖析。這是因?yàn)镴SON的語(yǔ)法結(jié)構(gòu)和YAML的內(nèi)置格式相同。雖然大范圍的分層也可以使用類(lèi)似JSON的內(nèi)置格式,不過(guò)YAML標(biāo)準(zhǔn)并不建議這樣使用,除非這樣編寫(xiě)能讓文件可讀性增加。YAML的許多擴(kuò)展在JSON是找不到的,如:進(jìn)階資料形態(tài)、關(guān)系錨點(diǎn)、字串不需要雙引號(hào)、映射資料形態(tài)會(huì)儲(chǔ)存鍵值的順序

XML

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容