YAML学习
YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写。
在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。
YAML 语言(发音 /ˈjæməl/ )的设计目标是方便人类读写。它实质上是一种通用的数据串行化格式。
基本语法
- 大小写敏感
- 使用缩进表示层级关系
- 缩进只允许空格
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- ‘#‘表示单行注释
数据结构
-
对象:键值对集合,又称映射/哈希/字典
# 冒号后的空格不可省略 key: value key: {name: TH, money: Infinit} # 复合 key: key1: value1 key2: value2
-
数组:或序列,列表
- a - b - c
-
纯量(scalars):单个不可分割的值,包括:
- 字符串,布尔,整数,浮点数,Null,时间,日期
boolean: TRUE #true,True都可以 float: 6.8523015e+5 #可以使用科学计数法 int: 0b1010_0111_0100_1010_1110 #二进制表示 null: ~ #使用~表示null string: - 哈哈 - 'Hello world' #可以使用双引号或者单引号包裹特殊字符 - newline newline2 #字符串可以拆成多行,每一行会被转化成一个空格 date: - 2018-02-17 #日期必须使用ISO 8601格式,即yyyy-MM-dd
datetime:
- 2018-02-17T15:02:31+08:00
#时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区
两个感叹号`!!`可以强制转换类型。
### 字符串
单引号
双引号不会对特殊字符转义
~~~yaml
s1: '内容\n字符串'
s2: "内容\n字符串"
转换成JS如下:
{ s1: '内容\\n字符串', s2: '内容\n字符串' }
多行字符串使用|
保留换行符,>
折叠换行。
引用
锚点&
和别名*
,可以用来引用。
defaults: &defaults
adapter: postgres
host: localhost
development:
database: myapp_development
<<: *defaults
test:
database: myapp_test
<<: *defaults
# 相当于下面
defaults:
adapter: postgres
host: localhost
development:
database: myapp_development
adapter: postgres
host: localhost
test:
database: myapp_test
adapter: postgres
host: localhost