YAML 适合由人维护的配置文件。它使用缩进表达层级,核心结构是映射、序列和标量。
基本结构
跳转到“基本结构”service: name: collector enabled: true ports: - 8000 - 8001 environment: LOG_LEVEL: info- 映射使用
key: value。 - 序列项以
-开头。 - 缩进只能使用空格;同一层级保持一致。
#开始注释,但引号内的#是普通字符。---可以标记文档开始或分隔同一流中的多个文档。
字符串与多行文本
跳转到“字符串与多行文本”普通字符串可以不加引号,但容易与布尔值、数字、日期或空值产生歧义。版本号、端口、时间、前导零编号和类似 yes、on 的值,跨解析器使用时建议显式加引号。
version: "1.0"device_id: "0012"schedule: "08:30"message: | 第一行 第二行summary: > 多行输入会折叠为 一段文本。| 保留换行,> 折叠换行。末尾换行还可由 |-、|+ 等指示符控制。
锚点与别名
跳转到“锚点与别名”锚点适合复用同一节点,但会增加阅读和工具兼容成本。
defaults: &defaults retries: 3 timeout: 10
worker: policy: *defaults配置合并语法和自定义标签并非所有 YAML 1.2 工具都以相同方式支持。跨工具配置应以目标工具文档和实际解析结果为准。
安全与可靠性
跳转到“安全与可靠性”- 使用成熟解析器,并选择安全加载接口,禁止不受信任输入构造任意对象。
- 在持续集成中执行语法解析和配置 Schema 校验。
- 避免重复键;不同解析器可能报错、覆盖或保留不同值。
- 不把密钥直接写入 YAML,改用环境变量或密钥管理系统。
- 不依赖隐式类型猜测;关键值显式加引号并在应用层校验类型。
YAML 可读性强,但并不天然简单。只需要机器间交换数据时,JSON 往往具有更稳定的互操作边界。
来源:CSDN 原文,首次发布于 2025-03-12。