YAML简介(.yml)
情景
最近在使用 github+hexo 配置属于自己的博客时遇到了以 yml
为后缀的配置文件,因为不太了解,所以顺便学习一下。
YAML 是什么?
YAML 是一种可读性高,以数据为中心的数据序列化格式。可以表达 对象(键值对),数组,标量 这几种数据形式 能够被多种编程语言和脚本语言解析。
什么是序列化?
序列化指的是将自定义的对象或者其他数据进行持久化,从而方便进行传输和存储。一般情况下,能够序列化的数据一定能够通过反序列化恢复。
YAML 语法与格式
基本语法
- 以
k: v
的形式来表示键值对的关系,冒号后面必须有一个空格 #
表示注释- 对大小写敏感
- 通过缩进来表示层级关系,缩排中空格的数目不重要,只要相同阶层的元素左侧对齐就可以了
- 缩进只能使用空格,不能使用
tab
缩进键 - 字符串可以不用双引号
格式
对象和键值对
通过 k: v
的方式表示对象或者键值对,冒号后必须要加一个空格:
1 | Name: Astron |
通过缩进来表示对象的多个属性:
1 | People: |
也可以写成
1 | people: {name: Astron, sex: female} |
数组
数组(或者列表)中的元素采用 -
表示,以 -
开头的行表示构成一个数组
eg1:
1 | - A |
eg2:
1 | people: |
行内表示:
1 | people: [yyy, zzz, www] |
eg3: 对象数组
1 | people: |
使用流式表示:
1 | people: [{name: yyy, age: 18},{name: zzz, age: 19}] |
标量
标量是最基本的不可再分的值,包括:
- 整数
- 浮点数
- 字符串
- 布尔值
- Null
- 时间
- 日期
eg:
1 | boolean: |
引用
&
用于建立锚点,*
用于引用锚点,<<
表示合并到当前数据
eg1:
1 | defaults: |
相当于:
1 | defaults: |
eg2:
1 | - &showell steve |
相当于:
1 | - steve |
使用场景
脚本语言
YAML 实现简单,解析成本低,所以特别适合在脚本语言中使用
序列化
配置文件
写 YAML 比 XML 方便,所以 YAML 也可以用来做配置文件,但是,不同语言间的数据流转不建议使用YAML。