正在加载,请稍候…

YAML 查看器和格式化工具:验证与美化 YAML

在线格式化和验证 YAML 文件。学习 YAML 语法、缩进规则、常见错误以及 Kubernetes、Docker Compose 和 GitHub Actio

YAML 查看器和格式化工具:验证与美化 YAML

什么是 YAML?

YAML(YAML Ain't Markup Language,递归缩写)是一种人类友好的数据序列化标准。YAML 旨在让人类和机器都能轻松阅读,它使用缩进和最少的标点符号来表达数据结构。

YAML 已成为现代基础设施和 DevOps 中配置文件的主流格式:Docker Compose、Kubernetes 清单、GitHub Actions 工作流、Ansible 剧本以及许多应用程序配置框架都使用 YAML。

YAML 查看器和格式化工具:验证与美化 YAML 插图

YAML 数据类型

YAML 会根据值自动推断数据类型:

# 字符串(除非值有歧义,否则不需要引号)
name: Alice
message: "This requires quotes: it has a colon"
long_string: 'Single quotes also work'

# 整数和浮点数
port: 8080
price: 19.99
negative: -5

# 布尔值(注意:许多值被视为真)
enabled: true     # 或 yes, on, True, TRUE
disabled: false   # 或 no, off, False, FALSE

# 空值
optional: null    # 或 ~
empty:            # 也是 null

# 日期
birthday: 1990-01-15
created_at: 2025-06-15T14:30:00Z

YAML 集合

映射(对象)

user:
  id: 1
  name: Alice
  email: alice@example.com
  address:
    city: New York
    country: US

# 流式风格(紧凑,类似 JSON)
user: {id: 1, name: Alice, email: alice@example.com}

序列(数组)

# 块风格
tags:
  - python
  - javascript
  - docker

# 流式风格
tags: [python, javascript, docker]

# 对象数组
users:
  - id: 1
    name: Alice
  - id: 2
    name: Bob

YAML 查看器和格式化工具:验证与美化 YAML 插图

YAML 锚点和别名

YAML 避免重复的最强大功能:

# 使用 & 定义锚点
default_config: &defaults
  database: postgres
  pool_size: 10
  timeout: 30
  retry: 3

# 使用 * 复用
production:
  <<: *defaults          # 合并所有默认值
  pool_size: 50          # 覆盖特定值
  environment: prod

staging:
  <<: *defaults
  environment: staging

多行字符串

YAML 优雅地处理多行字符串:

# 字面块(|)- 保留换行符和尾部换行符
script: |
  #!/bin/bash
  set -e
  echo "Starting deployment"
  npm run build
  pm2 restart app

# 折叠块(>)- 用空格连接行
description: >
  This is a long description that
  will be joined into a single
  paragraph.

# 截断指示符
text_trim: |-     # 无尾部换行符
  content
text_keep: |+     # 保留所有尾部换行符
  content

YAML 最佳实践

使用一致的缩进

YAML 对缩进敏感。选择 2 或 4 个空格,并在整个文件中保持一致。切勿混用制表符。

YAML 查看器和格式化工具:验证与美化 YAML 插图

对看起来像其他类型的字符串加引号

# 不加引号,这些会变成非字符串
version: "1.0"        # 字符串,不是浮点数 1.0
zip: "01234"          # 字符串,不是整数 1234(丢失前导零)
active: "yes"         # 字符串,不是布尔值 true

使用描述性注释

# 数据库连接设置
database:
  host: localhost      # 在 Docker Compose 中使用 'db'
  port: 5432           # 默认 PostgreSQL 端口
  name: myapp

常见 YAML 用例

Kubernetes:每个资源定义(Pod、Deployment、Service、ConfigMap)都是一个 YAML 文件。

GitHub Actions:定义 CI/CD 管道的工作流文件。

Docker Compose:多容器应用程序定义。

Ansible:基础设施自动化剧本和清单文件。

Spring Boot:应用程序配置(application.yml)。

Ruby on Rails:数据库配置(database.yml)、环境配置。

YAML 陷阱

挪威问题:在 YAML 1.1 中,值 NO(挪威的国家代码)被解析为 false。YAML 1.2 修复了这个问题,但许多解析器仍使用 YAML 1.1 行为。如有疑问,请对字符串加引号。

禁止制表符:YAML 1.1 完全禁止使用制表符进行缩进。始终使用空格。

浮点数解析:在某些解析器中,像 1.01e5.inf.nan 这样的值会被解析为浮点数/特殊值。

使用此工具

粘贴任何 YAML 文档即可立即验证它,以树状结构查看解析后的结构,并查看带有行号的任何语法错误。该工具以不同颜色突出显示每种数据类型,便于识别。

-> 试试 YAML 查看器