你是否见到过以 yml 为后缀的文件呢,你又是否了解 YAML 是什么吗~?如果不了解的话就一起来看看吧~
YAML 是什么?
YAML 是一种可读性高,以数据为中心的数据序列化格式。可以表达 对象(键值对),数组,标量 这几种数据形式 能够被多种编程语言和脚本语言解析。
什么是序列化?
序列化指的是将自定义的对象或者其他数据进行持久化,从而方便进行传输和存储。一般情况下,能够序列化的数据一定能够通过反序列化恢复。
YAML 语法与格式
基本语法
-
以
k: v
的形式来表示键值对的关系,冒号后面必须有一个空格 -
#
表示注释 -
对大小写敏感
-
通过缩进来表示层级关系,缩排中空格的数目不重要,只要相同阶层的元素左侧对齐就可以了
-
缩进只能使用空格,不能使用
tab
缩进键 -
字符串可以不用双引号
格式
对象和键值对
通过 k: v
的方式表示对象或者键值对,冒号后必须要加一个空格:
Name: Astron
Sex: female
School: TJU
通过缩进来表示对象的多个属性:
People:
Name: Astron
Sex: female
School: TJU
也可以写成
people: {name: Astron, sex: female}
数组
数组(或者列表)中的元素采用 -
表示,以 -
开头的行表示构成一个数组
eg1:
- A
- B
- C
eg2:
people:
- yyy
- zzz
- www
行内表示:
people: [yyy, zzz, www]
eg3: 对象数组
people:
-
name: yyy
age: 18
-
name: zzz
age: 19
使用流式表示:
people: [{name: yyy, age: 18},{name: zzz, age: 19}]
标量
标量是最基本的不可再分的值,包括:
-
整数
-
浮点数
-
字符串
-
布尔值
-
Null
-
时间
-
日期
eg:
boolean:
- true # 大小写都可以
- false
float:
- 3.14
- 3.25e+5 # 科学计数法
int: 12
null:
nodeName: name
string: 123
date: 2020-01-01 # 格式为 yyyy-MM-dd
datetime: 2020-01-10T15:02:08+08:00 # 日期和时间使用T连接,+表示时区
引用
&
用于建立锚点,*
用于引用锚点,<<
表示合并到当前数据
eg1:
defaults: &defaults
adapter: ppp
host: qqq
development:
database: mq
<<: *defaults
相当于:
defaults:
adapter: ppp
host: qqq
development:
database: mq
adapter: ppp
host: qqq
eg2:
- &showell steve
- clark
- eve
- *showell
相当于:
- steve
- clark
- eve
- steve
使用场景
脚本语言
YAML 实现简单,解析成本低,所以特别适合在脚本语言中使用
序列化
配置文件
写 YAML 比 XML 方便,所以 YAML 也可以用来做配置文件,但是,不同语言间的数据流转不建议使用YAML。
参考
[百度百科](https://baike.baidu.com/item/YAML/1067697?fr=aladdin)
[菜鸟教程](https://www.runoob.com/w3cnote/yaml-intro.html)
发表评论