抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

简介

YAML:全称”Yet Another Markup Language”(仍是一种标记语言)。yaml是以数据中心的标记语言。YAML配置文件的文件后缀是.yml

基本语法

  • 大小写敏感
  • 使用缩进表示层级关系(只允许使用空格,不允许使用tab)
  • 相同层级左对齐
  • ‘#’表示注释

数据类型

数据类型包括:对象、数组、纯量。

1. 对象

对象:键值对的集合,或称映射。

对象键值对使用冒号结构表示:key: value.冒号后有一个空格,例如:

1
2
3
key:
key1: value1
key2: value2

或者用流式语法表示为key:{key1: value1,key2: value2}

2. 数组

yaml以-开头的行表示构成一个数组。例如A、B、C三个数组:

1
2
3
- A
- B
- C

多维数组
即在一个数组元素下还是一个数组的数组。例如如下二维数组:

1
2
3
4
- 
- A
- B
- C

复合结构
复合结构即为较为复杂的数组,由对象和数组结合。如C语言等中的结构体数组。例如:

1
2
3
4
5
6
7
8
9
information:
-
name: Zhangsan
age: 20
hight: 175
-
name: Lisi
age: 21
hight: 170

information数组有两个元素,每个元素由name、age、hight三个元素组成。亦可以按information: [{name: Zhangsan,age: 20,hight: 175},{name: Lisi,age: 21,hight:170}]表示

3. 纯量

纯量是最基本的、不可再分的值。包括:

  • 字符串

字符串默认不用加上单引号或双引号:
双引号””:不会转义字符里的特殊字符,长什么样就输出什么样。
单引号’’:会转义字符串里的特殊字符。

转义:转换成字符所包含的含义。

  • 布尔值
  • 整数
  • 浮点数
  • Null
  • 时间
  • 日期

eg:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
String: 
- 你好
- "hello \n world" #原样输出
- 'Hello world' #可以使用双引号或者单引号包裹特殊字符
- newline
newline2 #字符串可以拆成多行,每一行会被转化成一个空格

Boolean:
- true #无所谓大小写
- False

int:
- 123
- 0b1010_0111_0100_1010_1110 #二进制表示

float:
- 3.14
- 6.8523015e+5 #可以使用科学计数法

null:
nodeName: 'node'
parent: ~ #使用~表示null

datetime:
- 2018-02-17T15:02:31+08:00 #时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区

date:
- 2018-02-17 #日期必须使用ISO 8601格式,即yyyy-MM-dd

引用

通过联合使用下面三个符号实现引用
& :建立锚点
*:引用锚点。
<<:表示合并到当前数据
例如

1
2
3
4
5
6
7
8
9
10
11
 defaults: &defaults
adapter: postgres
host: localhost

development:
database: myapp_development
<<: *defaults

test:
database: myapp_test
<<: *defaults

相当于:

1
2
3
4
5
6
7
8
9
10
11
12
13
defaults:
adapter: postgres
host: localhost

development:
database: myapp_development
adapter: postgres
host: localhost

test:
database: myapp_test
adapter: postgres
host: localhost

特殊符号

  1. ---:表示一个文档的开始,可以用在同一个文件中。亦可用来分割不同内容。如Springboot中的profile定义:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    server:
    address: 192.168.1.100
    ---
    spring:
    profiles: development
    server:
    address: 127.0.0.1
    ---
    spring:
    profiles: production
    server:
    address: 192.168.1.120

参考

  1. 菜鸟教程
  2. 阮一峰yaml教程
  3. YAML1.2规范.pdf
  4. 简书-博文

评论

Gitalk评论系统对接至Github Issue,随心评论🐾🐾.....