YAML 格式介绍

最近更新时间:2024-01-19 10:55:52

我的收藏
YAML 专门用来写配置文件的语言。

语法规则

YAML 的基本语法规则如下:
大小写敏感。
使用缩进表示层级关系。
缩进时不允许使用 Tab 键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。

数据结构

YAML 支持三种数据结构:对象、数组和纯量。
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)。
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)。
纯量(scalars):单个的、不可再分的值。

对象

简单对象
foo: whatever
bar: stuff
复杂对象
foo: whatever
bar:
-
fruit: apple
name: steve
sport: baseball
- more
-
python: rocks
perl: papers
ruby: scissorses
转换为 JavaScript 代码后:
{ foo: 'whatever',
bar:
[ { fruit: 'apple', name: 'steve', sport: 'baseball' },
'more',
{ python: 'rocks', perl: 'papers', ruby: 'scissorses' } ] }

数组

- Cat
- Dog
- Goldfish

纯量

纯量是最基本的、不可再分的值。
- 字符串
- 布尔值
- 整数
- 浮点数
- Null
- 时间
- 日期

字符串

字符串是比较复杂的类型,举例说明:
str: 这是一行字符串
如果字符串之中包含空格或特殊字符,需要放在引号之中。
str: '内容: 字符串'
单引号和双引号都可以使用,双引号不会对特殊字符转义。
s1: '内容\\n字符串' # 会对 \\n 字符转义
s2: "内容\\n字符串" # 不会对 \\n 字符转义
多行字符串可以使用 | 保留换行符,也可以使用 > 折叠换行。
this: |
Foo
Bar
that: >
Foo
Bar
转换为 JavaScript 代码:
{ this: 'Foo\\nBar\\n', that: 'Foo Bar\\n' }

工具

参见

Yaml Cookbook:提供了很多典型的 YAML 用例
YAML Syntax - Ansible:写了一些 YAML 的常见陷阱