# YAML
- YAML 是专门用来写配置文件的语言(它可以是 "YAML Ain't a Markup Language" 亦或是 "Yet Another Markup Language")
- YAML 数据能够存储在独立的.yml 文件中。
# YAML 语法
# 基本语法
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用 tab,只允许空格
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- #表示注释
# 支持的数据类型
- 对象:键值对的集合,又称为映射 / 哈希 / 字典
- 数组:一组按次序排列的值,又称为序列 / 列表
- 纯量:单个的、不可再分的值
# YAML 数组
#以 - 开头的数组 | |
- value1 | |
- value2 | |
#多维数组 | |
key: [value1, value2, ...] |
# YAML 纯量
- 字符串
- 布尔值
- 整数
- 浮点数
- Null
- 时间
- 日期
bool: | |
- TRUE #true, True 都可以 | |
- FALSE #false, False 都可以 | |
float: | |
- 2.33 | |
- 6.8523015e+5 #可以使用科学计数法 | |
int: | |
- 233 | |
- 0b1110_1001 #二进制表示 | |
null: | |
nodeName: 'node' | |
parent: ~ #使用~表示 null | |
string: | |
- 你好世界 | |
- 'Hello world' #可以使用双引号或者单引号包裹特殊字符 | |
- line1 | |
line2 #字符串可以拆成多行,每一行会被转化成一个空格 | |
date: | |
- 2233-02-33 #日期必须使用 ISO 8601 格式,即 yyyy-MM-dd | |
datetime: | |
- 2233-02-33T12:02:33+08:00 #时间使用 ISO 8601 格式,时间和日期之间使用 T 连接,最后使用 + 代表时区 |
# YAML 对象
- 格式 1:key: value
- 格式 2:key:
- 格式 3:利用缩进表示层级关系
- 格式 4:问号加一个空格代表一个复杂的 key,配合一个冒号加一个空格代表一个 value
#格式 3 | |
key: | |
child-key: value | |
child-key2: value2 | |
#格式 4:对象的属性是一个数组,对应的值也是一个数组 | |
? | |
- key1 | |
- key2 | |
: | |
- value1 | |
- value2 |
# 引用
#& 引用和 * 别名 | |
#& 用来建立锚点,<< 表示合并到当前数据,* 用来引用锚点。 | |
defaults: &defaults | |
child-key1: value1 | |
test: | |
child-key2: | |
- &show value2 | |
- value3 | |
- *show | |
<<: *defaults | |
#相当于 | |
defaults: | |
child-key1: value1 | |
test: | |
child-key2: | |
- value2 | |
- value3 | |
- value2 | |
child-key1: value1 |