开宗明义: 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是配置文件的最佳选项。固然,为此付出的代价,就是一开始须要手写一点点序列化/反序列化代码。