YAML简介
YAML 试图用一种比 XML 更敏捷的方式,来完成 XML 所完成的任务。
YAML Ain't Markup Language
和GNU一样,YAML是一个递归着说“不”的名字。不同的是,GNU对UNIX说不,YAML说不的对象是XML。
YAML不是XML。
为什么不是XML呢?因为:
- YAML的可读性好。
- YAML和脚本语言的交互性好。
- YAML使用实现语言的数据类型。
- YAML有一个一致的信息模型。
- YAML易于实现。
上面5条也就是XML不足的地方。同时,YAML也有XML的下列优点:
- YAML可以基于流来处理;
- YAML表达能力强,扩展性好。
总之,YAML试图用一种比XML更敏捷的方式,来完成XML所完成的任务。
更多的内容及规范参见http://www.yaml.org。
语法
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- # 表示注释,从这个字符一直到行尾,都会被解析器忽略。
yaml也有用来描述好几行相同结构数据的缩写语法,数组用“[]”包括起来,hash用“{}”来包括
bat:
website:
baidu: http://www.baidu.com
qq: http://www.qq.com
ali:
- http://www.taobao.com
- http://www.tmall.com
ceo:
yanhongli: 李彦宏
huatengma: 麻花疼
yunma: 马云
等价于
bat:
website:{baidu: http://www.baidu.com,qq: http://www.qq.com,ali: [http://www.taobao.com, http://www.tmall.com]}
ceo:{ yanhongli:李彦宏,huatengma:麻花疼,yunma:马云}
YAML 支持的数据结构有三种。
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
animal: pets - 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
- Cat
- Dog
- Goldfish
复合结构:
languages:
- Ruby
- Perl
- Python
websites:
YAML: yaml.org
Ruby: ruby-lang.org
Python: python.org
Perl: use.perl.org
- 纯量(scalars):单个的、不可再分的值
字符串 name: changhf
布尔值 result: true
整数
浮点数 number: 12.30
Null
时间
日期 date: 1976-07-31
null用~表示。
参考资料
https://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/
http://www.ruanyifeng.com/blog/2016/07/yaml.html?f=tt
网友评论