YAML简明教程
本文主要介绍YAML 。
YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。
YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。
YAML 的配置文件后缀为 yml或yaml。
关键词:YAML
yaml文件格式
基本语法
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用Tab,只允许空格
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
#表示注释---表示yaml格式文件的开始
数据类型
YAML支持以下数据类型
- 对象:键值对的几个,又称为映射(mapping)/ 哈希(hashes)/ 字典(dictionary)
- 数组:一组按次序排列的值,又称为序列(sequence)/ 列表(list)
- 标量(scalars):单个的、不可再分的值
YAML对象
对象键值对使用冒号结构表示key-value,冒号后面要加一个空格。
也可以使用key:{key1: value, key2: value, ...}
也可以使用缩进表示层级关系:
1 | key: |
对于较为复杂的对象格式,可以使用问号加一个空格表示一个复杂的key,配合一个冒号加一个空格表示一个value
1 | ? |
即对象的属性是一个数组[complexkey1,complexkey2],对应的值也是一个数组[complexvalue1, complexvalue2]
YAML数组
以-开头的行表示构成一个数组
1
2
3- A
- B
- C
支持多维数组,可以使用行内表示
1 | key: [value1, value2, ...] |
如果子成员是一个数组,则可以在下面缩进一个空格
1 | - |
一个复杂的例子:
1 | companies: |
即companies属性是一个数组,每一个数组元素又是由id/name/price三个属性组成。
数组也可以使用行内表示
1 | companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}] |
复合结构
1 | languages: |
转换为json
1 | { |
标量
标量是不可再分的值,包括
- 字符串
- 布尔值
- 整数
- 浮点数
- NULL
- 时间
- 日期
通过一个例子来了解纯量的基本使用
1 | boolean: |
引用
&锚点和*别名,可以用来引用
1 | defaults: |
相当于
1 | defaults: |
&用来建立锚点,<<表示合并到当前数据,*用来引用锚点。
此处的锚点有点类似于编程语言【指针】的含义。
下面是另一个例子:
1 | - &showell Steve |
转换为JavaScript代码如下
1 | [ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ] |
参考地址
- https://www.runoob.com/w3cnote/yaml-intro.html
- https://www.ruanyifeng.com/blog/2016/07/yaml.html
- https://www.jianshu.com/p/97222440cd08
- https://daihainidewo.github.io/blog/yaml%E6%95%99%E7%A8%8B/