Skip to content

YAML – 块式序列

块序列(Block sequences)是 YAML 中表示列表(lists)或数组(arrays)的最常用方式。其特点是每个条目都以短划线加空格(- )开头,位于新的一行,且序列中的所有条目都共享相同的缩进级别(indentation level)。

块序列条目的基本结构是:

- item_value

如果序列是映射(mapping)中的一个值,它会相对于其父键(parent key)进行缩进:

parent_key:
- item1
- item2
- another_item: value # 条目可以是复杂的结构

一个简单的编程语言列表:

languages:
- Python
- JavaScript
- Ruby
- Go

这个 YAML 定义了一个键(key)languages,其值是一个包含四个字符串(strings)的序列(sequence)。从概念上讲,它将被解析成类似以下的结构:

{
"languages": [
"Python",
"JavaScript",
"Ruby",
"Go"
]
}

块序列也可以包含更复杂的条目,例如映射(mapping,即对象 object)。这在表示记录或配置列表时很常见。

users:
- name: Alice
role: admin
id: 101
- name: Bob
role: editor
id: 102
- name: Charlie
role: viewer
id: 103

在这里,users 是一个序列(sequence),其中每个条目都是一个映射(mapping),包含 name、role 和 id 键(key)。等效的 JSON 结构将是:

{
"users": [
{
"name": "Alice",
"role": "admin",
"id": 101
},
{
"name": "Bob",
"role": "editor",
"id": 102
},
{
"name": "Charlie",
"role": "viewer",
"id": 103
}
]
}
  • **缩进(Indentation):**短划线 - 被视为缩进的一部分。同一块序列中的所有条目,其短划线必须对齐在相同的缩进级别上。
  • **空白字符(Whitespace):**在短划线之后(- )需要一个空格,然后才是条目的内容。
  • **嵌套结构(Nested Structures):**块序列中的条目本身可以是标量(scalars)、映射(mappings)或其他序列(sequences),从而允许创建深度嵌套的数据结构。

块序列是 YAML 可读性的基础,被广泛用于表示有序的数据集合。