開宗明義: YAML是個好格式!程序員
做爲配置文件,YAML應該是對人眼讀取和編輯最友好的了,固然擴展性呢,就比JSON差了點,更不如XML,不過有舍有得麼,通常狀況下夠用了。服務器
直接上例子,看一下對比效果就知道了。測試
同一組配置,用JSON寫是這個樣子:code
{ "id": 100, "name": "測試項目", "version": "3.1", "steps": [ { "id": 18, "action": "Prepare", "expects": [ { "id": 238, "result": "GOOD" }, { "id": 239, "result": "PERFECT" } ] } ] }
雖然格式化之後可讀性也不錯,但編輯起來就費勁了。這還僅僅是三層嵌套,括號對齊就有點嚇人。xml
若是用XML表示,會更加複雜,像下面這段,在沒有語法高亮的狀況下,讀起來對人是一種折磨:對象
<?xml version="1.0" encoding="utf-8" ?> <project> <id datatype="int">100</id>: 100 <name datatype="string">測試項目</name> <version datatype="string">3.1</version> <steps> <step> <id datatype="int">18</id>, <action datatype="string">Prepare</action>, <expects> <step> <id datatype="int">238</id> <result datatype="ResultType">GOOD</result> </step> <step> <id datatype="int">239</id> <result datatype="ResultType">PERFECT</result> </step> </expects> </step> </steps> </project>
要想手敲這段代碼,更是容易出錯:各類標籤不封閉,嵌套層級混亂之類的。(想象一下遠程登陸到服務器,用VIM或Nano打開它的樣子)。utf-8
當YAML到來之後,世界一會兒清爽了:文檔
id: 100 name: "測試項目" version: "3.1" steps: - id: 18 action: "Prepare" expects: - id: 238, result: GOOD - id: 239, result: PERFECT
是否是無比簡潔? 僅僅字符數,JSON就比YAML多了75%,XML更是多出320%!究其緣由,主要是YAML直接使用了對人眼友好的return和tab做爲數據分隔符,這樣一來,編輯起來簡直跟Markdown文檔差很少,堪稱程序員福利啊。string
固然這世上沒有銀彈,YAML也有它固有的缺點。io
若是沒有強烈的第三方擴展性需求,YAML是配置文件的最佳選項。固然,爲此付出的代價,就是一開始須要手寫一點點序列化/反序列化代碼。