跳转到内容
新建笔记

YAML 配置与数据序列化

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 工具都以相同方式支持。跨工具配置应以目标工具文档和实际解析结果为准。

  1. 使用成熟解析器,并选择安全加载接口,禁止不受信任输入构造任意对象。
  2. 在持续集成中执行语法解析和配置 Schema 校验。
  3. 避免重复键;不同解析器可能报错、覆盖或保留不同值。
  4. 不把密钥直接写入 YAML,改用环境变量或密钥管理系统。
  5. 不依赖隐式类型猜测;关键值显式加引号并在应用层校验类型。

YAML 可读性强,但并不天然简单。只需要机器间交换数据时,JSON 往往具有更稳定的互操作边界。


来源:CSDN 原文,首次发布于 2025-03-12。