一、YAML介绍
YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822。Clark Evans在2001年5月在首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。
YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种置标语言),
YAML的特性
1、YAML的可读性好
2、YAML和脚本语言的交互性好
3、YAML使用实现语言的数据类型
4、YAML有一个一致的信息模型
5、YAML可以基于流来处理
6、YAML表达能力强、扩展性好
二、YAML语法
基本语法规则如下:
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
# 表示注释,从这个字符一直到行尾,都会被解析器忽略。
YAML 支持的数据结构有三种:
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
- 纯量(scalars):单个的、不可再分的值
YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表,标量等资料形态。连续的项目通过减号“-”来表示,map结构里面的key/value对用冒号“:”来分隔。样例如下:
house: family: name: Doe parents: - John - Jane children: - Paul - Mark - Simone address: number: 34 street: Main Street city: Nowheretown zipcode: 12345
注意:
字串不一定要用双引号标识;
在缩排中空白字符的数目并不是非常重要,只要相同阶层的元素左侧对齐就可以了(不过不能使用TAB字符);
允许在文件中加入选择性的空行,以增加可读性;
在一个档案中,可同时包含多个文件,并用“——”分隔;
选择性的符号“...”可以用来表示档案结尾(在利用串流的通讯中,这非常有用,可以在不关闭串流的情况下,发送结束讯号)。
YAML文件扩展名通常为.yml 如example.yml
2.2.1 list
列表的所有元素均使用"-"开头,例如:
- John
- Jane
2.2.2 dictionary
字典通过key与value进行标识,例如:
number: 34
street: Main Street
city: Nowheretown
zipcode: 12345
也可以将key:value放置于{}中进行表示,例如:
{street: Main Street,city: Nowheretown,zipcode: 12345}