YAML,即 YAML Ain’t a Markup Language(YAML 不是一种标记语言)的递归缩写。YAML 其实意思是 Yet Another Markup Language(仍是一种标记语言)。它主要强度这种语言是以数据为中心,而不是以标记为中心,而像 XML 语言就使用了大量的标记。
YAML 可读性高,易于理解,用来表达数据序列化的格式。它的语法和其他高级语言类似,还可以简单表达数组、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件。
YAML 配置文件后缀为
.yml
,例如
application.yml
。
-
YAML 使用 Unicode 字符,也可使用 UTF-8 或 UTF-16。
-
数据结构采用键值对的形式,即
键名称: 值
,注意冒号后面要有空格。
-
数组中的每个元素单独一行,并以
-
开头,例如
- 陈皮
。或使用方括号,元素用逗号隔开,例如
["陈皮", "狗蛋"]
。注意短横杆和逗号后面都有空格。
-
散列表中的每个成员单独一行,使用键值对形式,例如
name: 陈皮
。或者使用大括号并用逗号分开,例如
{"name": 陈皮, "age": 18}
。
-
字符串值一般不使用引号,必要时可使用,使用双引号表示字符串时,会转义字符串中的特殊字符(例如
\n
)。使用单引号时不会转义字符串中的特殊字符。
-
字母大小写敏感。
-
使用缩进表示层级关系,缩进使用空格不推荐使用 tab,因为在不同系统 tab 长度可能不一样。
-
缩进的空格数可以任意,只要相同层级的元素左对齐即可。
-
用连续三个连字号
---
划分多个文档块。还有选择性的连续三个点号
...
表示文件结尾。
-
#
表示注释,可以出现在一行中的任何位置,单行注释。
-
使用逗号和冒号时,后面都必须接一个空白字符。所以可以在字符串或数值中自由加入分隔符号(例如
5,280
或者
http://www.wikipedia.org
)而不需要使用引号。
-
标量:单个的、不可再分的值。
-
对象:键值对的集合。
-
数组:一组按次序排列的值,又称为序列或者列表。
标量是最基础的数据类型,不可再分的值,他们一般用于表示单个的变量,有以下七种:
-
字符串
-
布尔值
-
整数
-
浮点数
-
Null
-
时间
-
日期