什么是Yaml
YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。
基本语法
- 对大小写敏感
- 通过缩表示关系
- 不允许使用
tab
键 #
注释
对象
Yaml中对象的表现形式为key: value
person:
name: luckyFang
age: 21
这里需要注意的是,键值対 键和值 中间有
空格
错误示范:
buffer:
size:5
上面的
size
这个 value 就不对。 应当改成size: 5
数组
常规数组
menu:
- apple
- orange
- banana
多维数组
menu:
-
id: 1
name: apple
price: 1.5
-
id: 2
name: orange
price: 2.5
-
id: 3
name: banana
price: 4.5
综合示例
languages:
- java
- python
- go
- c
configer:
version: 1.8
packgeType: jar
active:
- dev
- product
- normal
纯量
原子性:最基本的不可再拆分。
- string
- boolean
- number
- double
- null
- datetime
- date
boolean:
- TRUE
- FALSE
float:
- 1.2
- 1.23e+5
int:
- 123
- 0b01010110_10010011
null:
nodeName: 'node'
parent: ~ # ~ 表示null
string:
- 你好
- '你好 世界'
- line1
line2 #字符串拆分多行后,每行替换成一个空格
date:
- 2020-08-09
datetime:
- 2020-08-09T22:00:31+08:00
引用
&
锚点
*别名
<<合并
# YAML
a: &flag # 锚点
one: 1
two: 2
three: 3
b: *flag # 引用
// JSON
"a": {
"one": 1,
"two": 2,
"three": 3
},
"b": {
"one": 1,
"two": 2,
"three": 3
}
a: &flag
one: 1
two: 2
three: 3
b:
<<: *flag # 展开合并
four: 4
等同于
a: &flag
one: 1
two: 2
three: 3
b:
one: 1
two: 2
three: 3
four: 4