YAML – 集合与结构
YAML - 集合与文档结构
Section titled “YAML - 集合与文档结构”YAML 的强大之处在于它能够通过集合(collection)(如序列 sequence 和映射 mapping)来表示结构化数据,并能在文档(document)中组织这些集合。本章将探讨这些元素如何组合起来形成复杂的数据结构。
块集合使用缩进来定义范围和结构。块集合中的每个项目通常都始于新的一行。
1. 块序列(列表/数组)
Section titled “1. 块序列(列表/数组)”块序列表示有序的项目列表。每个项目都以破折号和空格 (- ) 开头。
# 玩家姓名序列(标量)players: - Mark Joseph - James Stephen - Ken Griffey2. 块映射(字典/对象)
Section titled “2. 块映射(字典/对象)”块映射表示键值对(key-value pairs)。每对键值占据一行,键后面跟着冒号和空格 (: )。
# 玩家统计数据映射(标量到标量)stats: hr: 87 # 全垒打 avg: 0.298 # 打击率 rbi: 149 # 打点集合可以嵌套,以创建更复杂的数据层次结构。
标量到序列的映射
Section titled “标量到序列的映射”leagues: european: - Boston Red Sox - Detroit Tigers - New York Yankees national: - New York Mets - Chicago Cubs - Atlanta Braves这是一种非常常见的模式,代表一个对象列表。
player_details: - name: Mark Joseph hr: 87 avg: 0.278 - name: James Stephen hr: 63 avg: 0.288流式集合(简要回顾)
Section titled “流式集合(简要回顾)”提醒一下,YAML 也支持集合的流式(内联)样式,使用显式指示符:
- 流式序列:
[item1, item2, item3] - 流式映射:
{key1: value1, key2: value2}
languages: [PHP, Perl, Python]coordinates: {x: 10, y: 20, z: 5}流式样式常用于简单集合,或在嵌套于块结构中时使用。
一个 YAML 流(stream)可以包含多个文档(document)。这对于连接独立的 YAML 文件或将相关但不同的数据集分组非常有用。
- 文档开始符 (
---):三个连字符表示流中新 YAML 文档的开始。 - 文档结束符 (
...):三个点可选地标记文档的结束。这对于在新文档开始之前发出文档结束信号,或用于流处理非常有用。
# 文档 1:1998 年全垒打排名---- Mark Joseph- James Stephen- Ken Griffey...# 文档 2:球队排名---- Chicago Cubs- St Louis Cardinals# 流结束,... 在此可选实际应用:Kubernetes 配置文件常使用 --- 在单个 .yaml 文件中分隔多个资源定义(例如,一个 Deployment 和一个 Service)。
虽然大多数映射键是简单的标量(字符串),但 YAML 允许使用复杂键(complex keys),例如序列或映射本身。为了清晰地表示复杂键,可以在键之前使用问号和空格 (? )。
# 以序列作为键的映射match_dates: ? [New York Yankees, Atlanta Braves] # 复杂键 : [2001-07-02, 2001-08-12, 2001-08-14] # 复杂键的值 ? [Boston Red Sox, Florida Marlins] : [2001-07-04, 2001-08-16]
# 另一个结构更显式的示例# 这表示一个映射条目的开始,其中键本身具有结构? - 键序列中的项1 - 键序列中的项2: 序列键的值复杂键不太常见,但在表示某些类型的数据关系时非常强大。然而,为了简单性和更广泛的兼容性(尤其是在转换为 JSON 时,JSON 只允许字符串键),通常首选使用标量键。
通过组合这些集合类型并在文档中组织它们,YAML 提供了一种灵活且易于阅读的方式来建模各种数据。