Skip to content

YAML – 简介

YAML(递归缩写,意为“YAML Ain’t Markup Language”,即“YAML 不是标记语言”)是一种人类可读的数据序列化标准。它被设计成直观易懂,方便人类读写,并且可以与各种编程语言无缝协作。YAML 常用于配置文件、不同语言之间的数据交换以及对象持久化。本章节将向您介绍 YAML 及其核心特性。

YAML 使用三种基本形式表示数据:映射(key-value pairs,键值对)、序列(sequences,列表/数组)和标量(scalars,字符串、数字、布尔值)。缩进(使用空格,而非制表符 tabs)对于定义结构至关重要。

考虑一个简单的键值对:

name: John Doe

这表示一个映射,其中键 ‘name’ 与字符串值 ‘John Doe’ 关联。

我们来看看如何在 YAML 中表示不同的数据类型:

一个浮点数:

# YAML representation of Pi
pi: 3.1415926536

当被 YAML 解析器解析时,与 ‘pi’ 关联的值将被解释为浮点数。

一个序列(列表):

groceries:
- eggs
- ham
- spam
- bread

此 YAML 表示一个键 ‘groceries’,其值是字符串列表。YAML 解析器通常会将其转换为目标编程语言中的数组或列表数据结构,例如在 Python 中:

# Conceptual Python representation after parsing
# {'groceries': ['eggs', 'ham', 'spam', 'bread']}

YAML 的设计提供了多个优势:

  • 人类可读性:简洁的语法使 YAML 文件易于阅读和理解。
  • 数据结构:自然映射到大多数编程语言中常见的数据结构(例如,列表、字典/映射、标量)。
  • 可移植性:YAML 数据可以在不同的编程语言和系统之间轻松交换。
  • 注释:支持注释(以 ’#’ 开头),以便在数据文件本身内进行更好的文档记录。
  • 锚点和别名:允许使用锚点 (&) 和别名 (*) 来重用数据块,推广 DRY (Don’t Repeat Yourself,不要重复自己) 原则。
  • 广泛的语言支持:Python、Ruby、Java、JavaScript、Go 和 C# 等许多流行编程语言都有用于解析和生成 YAML 的库。
  • Unicode 支持:YAML 完全支持 Unicode 字符,允许国际化内容。

有关更多信息,您可以参考官方 YAML 规范:yaml.org。