YAML语法简介
三种常见的数据交换格式
YAML介绍
- YAML是一个可读性高的用来表达资料序列的格式。
- YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822等。
- Clark Evans在2001年在首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。
- YAML Ain't Markup Language,即YAML不是XML。 不过,在开发的这种语言时,YAML的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。
特性
- YAML的可读性好
- YAML和脚本语言的交互性好
- YAML使用实现语言的数据类型
- YAML有一个一致的信息模型
- YAML易于实现
- YAML可以基于流来处理
- YAML表达能力强,扩展性好
更多的内容及规范参见:The Official YAML Web Site
语法
> 在单一档案中,可用连续三个连字号(——)区分多个档案。 另外,还有选择性的连续三个点号( ... )用来表示档案结尾;
> 次行开始正常写Playbook的内容,一般建议写明该Playbook的功能;
> 使用#号注释代码;
> 缩进必须是统一的,不能空格和tab混用;
> 缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进结合换行来实现的;
> YAML文件内容是区别大小写的,k/v的值均需大小写敏感;
> 多个k/v可同行写也可换行写,同行使用:分隔;
> v可是个字符串,也可是另一个列表[];
> 一个完整的代码块功能需最少元素需包括 name 和 task;
> 一个name只能包括一个task > YAML文件扩展名通常为yml或yaml。
List:列表,其所有元素均使用“-”打头
列表代表同一类型的元素
示例:
# A list of tasty fruits
- Apple
- Orange
- Strawberry
- Mango
Dictionary:字典,通常由多个key与value构成 键值对
示例:
---
# An employee record
name: Example Developer
job: Developer
skill: Elite
也可以将key:value放置于{}中进行表示,用,分隔多个key:value
示例:
---
# An employee record
{name: Example Developer, job: Developer, skill: Elite} 有空格
YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表、标量等数据结构。 其结构(Structure)通过空格来展示,序列(Sequence)里的项用"-"来代表,Map里的键值对用":"分隔。
示例:
name: John Smith
age: 41
gender: Male
spouse:
name: Jane Smith
age: 37
gender: Female
children:
- name: Jimmy Smith
age: 17
gender: Male
- name: Jenny Smith
age 13
gender: Female