簡(jiǎn)介
YAML:YAML Ain't Markup Language 另一種標(biāo)記語言。(YAML不是一種置標(biāo)語言)
但為了強(qiáng)調(diào)這種語言以數(shù)據(jù)做為中心啥箭,而不是以置標(biāo)語言(也就是說標(biāo)記語言
酒繁,像XML皮钠, HTML等)為重點(diǎn)识樱,而用返璞詞重新命名。
它是一種直觀的能夠被電腦識(shí)別的數(shù)據(jù)序列化格式猴贰,是一個(gè)可讀性高并且容易被人類閱讀对雪,容易和腳本語言交互,用來表達(dá)資料序列的編程語言米绕。
它是一種直觀的能夠被電腦識(shí)別的數(shù)據(jù)序列化格式瑟捣,是一個(gè)可讀性高并且容易被人類閱讀,容易和腳本語言交互栅干,用來表達(dá)資料序列的編程語言迈套。
格式
數(shù)據(jù)結(jié)構(gòu)可以用類似大綱的縮排方式呈現(xiàn),結(jié)構(gòu)通過縮進(jìn)來表示碱鳞,連續(xù)的項(xiàng)目通過減號(hào)-
來表示桑李,map結(jié)構(gòu)里面的key/value
對(duì)用冒號(hào):
來分隔。樣例如下:
house:
family:
name: Doe
parents:
- John
- Jane
children:
- Paul
- Mark
- Simone
address:
number: 34
street: Main Street
city: Nowheretown
zipcode: 12345
字串不一定要用雙引號(hào)標(biāo)識(shí)窿给;
在縮排中空白字符的數(shù)目并不是非常重要贵白,只要相同階層的元素左側(cè)對(duì)齊就可以了(不過不能使用TAB字符);
允許在文件中加入選擇性的空行崩泡,以增加可讀性禁荒;
在一個(gè)檔案中,可同時(shí)包含多個(gè)文件角撞,并用“——”分隔呛伴;
選擇性的符號(hào)“...”可以用來表示檔案結(jié)尾(在利用串流的通訊中,這非常有用谒所,可以在不關(guān)閉串流的情況下热康,發(fā)送結(jié)束訊號(hào))。
單行縮寫:
YAML也有用來描述好幾行相同結(jié)構(gòu)的數(shù)據(jù)的縮寫語法百炬,數(shù)組用'[]'包括起來褐隆,hash用'{}'來包括污它。因此剖踊,上面的這個(gè)YAML能夠縮寫成這樣:
house:
family: { name: Doe, parents: [John, Jane], children: [Paul, Mark, Simone] }
address: { number: 34, street: Main Street, city: Nowheretown, zipcode: 12345 }
適用場(chǎng)景:
1)腳本語言
由于實(shí)現(xiàn)簡(jiǎn)單庶弃,解析成本很低,YAML特別適合在腳本語言中使用德澈。列一下現(xiàn)有的語言實(shí)現(xiàn):Ruby歇攻,Java,Perl梆造,Python缴守,PHP,OCaml镇辉,JavaScript屡穗,除了Java,其他都是腳本語言忽肛。
2)序列化
YAML比較適合做序列化村砂。因?yàn)樗撬拗髡Z言數(shù)據(jù)類型直轉(zhuǎn)的。
3)配置文件
YAML做配置文件也不錯(cuò)屹逛。寫YAML要比寫XML快得多(無需關(guān)注標(biāo)簽或引號(hào))础废,并且比ini文檔功能更強(qiáng)。
比如Ruby on Rails的配置就選用的YAML罕模。對(duì)ROR而言评腺,這很自然,也很省事.
由于兼容性問題淑掌,不同語言間的數(shù)據(jù)流轉(zhuǎn)建議不要用YAML.