YAML是一种可读性高,以数据为中心的数据序列化格式。可以表达对象(键值对)、数组、标量,能够被多种贬称该语言和脚本语言解析。
基本语法
- 以 k:v 的形式表示键值对的关系,冒号后面必须有一个空格;
- # 表示注释;
- 对大小写敏感;
- 通过缩进来表示层级关系,缩排中空格的数目不重要,只要相同阶层的元素左侧对齐就可以;
- 缩进只能使用空格,不能使用tab缩进键;
- 字符串可以不用双引号;
格式
1. 键值对
键值通过 冒号:,形如 k: v的方式表示,冒号后面要加一个空格,比如:
Name: Astrom
Sex: femal
School: TJU
如果是一个对象的多个属性,有两种表示方式:
// 第一种表示方式
People:
Name: Astron
Sex: femal
School: TJU// 第二种表示方式
People: {Name: Astron, Sex: femal}
2. 数组
数组中的元素采用 - 表示,以 - 开头的行表示构成一个数组;如下:
- A
- B
- C
如果有多个数据,有两种表示方法
// 第一种表示方法
People:
- yyy
- zzz
- www// 第二种表示方法
People: [yyy, zzz, www]
对象数组的表示也有两种方式,如下:
// 第一种表示方式
People:
-
name: yyy
age: 18
-
name: zzz
age: 19// 第二种表示方式,流式表示
People: [{name: yyy, age: 18},{name: zzz, age: 19}]
3. 标量
标量是最基本的不可再分的值,包括:
- 整数
- 浮点数
- 字符串
- 布尔值
- Null
- 时间
- 日期
表示如下:
boolean:
- true # 大小写都可以
- false
float:
- 3.14
- 3.25e+5
int: 12
null:
nodeName: name
string: 123
date: 2020-01-01 # 格式为yyy-MM-dd
datetime: 2020-01-01T15:02:08+08:00 # 日期和时间使用T连接,+表示时区
4. 引用
& 建立锚点,* 引用锚点,<< 合并到当前数据,实例:
defaults: &defaults
adapter: ppp
host: qqq
development:
database: mq
<<: *defaults
// 上述语句相当于
defaults:
adapter: ppp
host: qqq
development:
database: mq
adapter: ppp
host: qqq
// 实例二
- &showell steve
- clark
- eve
- *showell
// 相当于
- steve
- clark
- eve
- steve
最后YAML的使用场景,可以用在脚本语言或者配置文件中,但需要注意不同语言间的数据流转不建议使用YAML。