跳到主要内容

YAML语法


介绍

YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式, 通常用于配置文件和数据交换。 它采用缩进表示层次关系,通过简单的语法实现了清晰易读的文本表示。

基本语法

键值对

YAML中的键值对使用冒号:分隔,键值对之间使用换行分隔。

key: value

列表

YAML中的列表使用短横线-分隔,列表项之间使用换行分隔。

- item1
- item2

嵌套

YAML中的键值对和列表可以相互嵌套。

key:
- item1
- item2

嵌套结构

YAML中的键值对和列表可以相互嵌套,形成嵌套结构。

parent:
child1: value1
child2: value2

数据类型

YAML中的数据类型包括:字符串、整数、浮点数、布尔值、时间、日期、时间日期、列表、键值对、嵌套结构。

字符串

字符串可以使用单引号或双引号括起来,也可以直接写在一行中

str1: 'single-quoted string'
str2: "double-quoted string"
str3: plainstring
str4: |
literal string
keep line breaks

数字和布尔值

YAML中的数字与其他编程语言相似。

integer: 42
float: 3.14

布尔值

YAML中的布尔值true为真,false为假。

boolean: true
boolean2: false

注释

在YAML中,使用井号(#)表示注释,注释可以出现在行的任意位置。

# 这是一个注释
key: value # 这也是一个注释

示例

以下是一个简单的YAML文档示例,展示了上述介绍的基本语法和数据类型的使用。

string: "string"
integer: 1
float: 1.0
boolean: true
date: 2021-01-01
time: 12:00:00
datetime: 2021-01-01 12:00:00
list:
- item1
- item2
map:
key1: value1
key2: value2
nested:
parent:
child1: value1
child2: value2

格式化

缩进

YAML使用缩进表示层次关系,缩进使用空格或制表符,但不允许混用。

# 使用空格缩进
key:
- item1
- item2

# 使用Tab缩进
key:
- item1
- item2

最好使用VSCode的YAML插件,它会自动将Tab转换为空格,并且检查缩进是否正确。

进阶主题

引用

YAML支持引用方式,使得可以在文档中重复使用相同的值。

锚点

在YAML中,你可以使用锚点(&)为一个数据结构创建引用, 然后使用星号(*)在其他地方引用该结构。 这在避免重复和提高可维护性方面非常有用。

# 创建一个锚点
defaults: &defaults
key1: value1
key2: value2

# 引用锚点
config1:
<<: *defaults
key3: value3

config2:
<<: *defaults
key3: anotherValue

别名

除了使用锚点引用整个数据结构外, 你还可以使用别名(*)来引用特定的数据值。 这对于大型结构中的部分引用非常有用。

person: &person
name: John
age: 30

employee:
<<: *person
position: Developer

多行字符串

YAML中的字符串可以使用|>表示多行字符串。

literal: |
literal string
keep line breaks

folded: >
folded string
remove line breaks