本文已参与「新人创作礼」活动,一起开启掘金创作之路
YAML
YAML(Yet Another Markup Language)一种标记语言
介绍
- 为什么是
yaml
- 可以简单的表达清单,散列表,标量等数据形态
- 特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲
- YAML 的配置文件后缀为
.yaml
基本知识
- 要求区分大小写
- 只能用空格表达缩进,不能用tab
- 使用缩进表示层级关系
- 表示缩进的空格数不重要,相同层级的元素左对齐即可
- #表示注释
数据类型
- 对象:键值对的集合(映射,哈希,字典)
对象
-
对象键值对使用“key: value”结构表示(特别提醒:冒号后有一个空格)
-
有了单个键值对的表示我们就知道了他们的集合表示
key:{key1: value1, key2: value2, ...}
- 使用缩进表示层级关系
key:
child-key: value
child-key2: value2
- 复杂的对象格式,可以使用问号加空格表示复杂的key,配合一个冒号加一个空格代表一个value
?
- key1
- key2
:
- value1
- value2
以上的意思就是对象的属性是一个[kkey1,key2],对应值也是一个数组[value1,value2]
纯量
-
纯量:单个的不可再分的值
- 整数
- 浮点数
- 字符串
- 布尔值
- Null
- 时间,日期
数组
- 数组:一组按次序排列的值(序列,列表)
- 以 - 开头的行表示构成一个数组
- a
- b
- c
- 多维数组的行内表示
key: [value1, value2, ...]
数据结构的子成员是一个数组,则可以在该项下面缩进一个空格
-
- A
- B
- C
例子:
fruit:
-
id: 1
name: apple
price: 2
-
id: 2
name: pear
price: 1.2
-
id: 3
name: banana
price: 4
fruit属性是一个数组,每个数组元素由id、name、price三个属性构成
数组也可以使用流式(flow)的方式表示
fruit: [{id: 1,name: apple,price: 2},{id: 2,name: pear,price: 1.2},{id: 3,name: banana,price: 4}]
- 复合结构
数组和对象符合
languages:
- Yaml
- Python
websites:
YAML: yaml.org
Python: python.org
引用
&和*共同使用称为引用
defaults: &defaults
adapter: postgres
host: localhost
#示例
development:
database: myapp_development
<<: *defaults
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
development:
database: myapp_development
adapter: postgres
host: localhost
#以上示例两部分的代码是完全相等的
可以多次引用
defaults: &defaults
adapter: postgres
host: localhost
development:
database: myapp_development
<<: *defaults
test:
database: myapp_test
<<: *defaults
& 用来建立锚点(defaults),<< 表示合并到当前数据,***** 用来引用锚点