yaml配置文件使用规则

YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式,常用于配置文件、数据交换等场景。它以简洁、清晰的语法著称,比 JSON 更易读写,比 XML 更轻量。


一、YAML 的基本特点

  • 缩进表示层级关系(使用空格,不能用 Tab)
  • 大小写敏感
  • 支持注释 (以 # 开头)
  • 数据结构包括:标量(scalar)、映射(map / object)、序列(list / array)

二、基本语法示例

1. 标量(Scalar)

表示单个值,如字符串、数字、布尔值等。

yaml 复制代码
name: Alice
age: 30
is_student: false

注意:字符串通常不需要加引号,除非包含特殊字符或冒号等。

2. 映射(Map / Dictionary / Object)

键值对结构,用冒号+空格分隔键和值。

yaml 复制代码
person:
  name: Bob
  age: 25
  city: "New York"

3. 序列(List / Array)

用短横线 - 表示列表项。

yaml 复制代码
fruits:
  - apple
  - banana
  - orange

也可以写成行内形式(类似 JSON):

yaml 复制代码
colors: [red, green, blue]

4. 嵌套结构(组合使用)

yaml 复制代码
school:
  name: Sunshine High
  students:
    - name: Tom
      grade: 10
    - name: Lily
      grade: 11

三、常用规则与注意事项

规则 说明
缩进必须一致 使用空格(推荐 2 个空格),不能混用 Tab
冒号后必须有空格 key: value ✅,key:value
字符串引号可选 但含特殊字符(如 :, {}, [], # 等)时建议加引号
支持多行字符串 使用 `
多行字符串示例:
yaml 复制代码
description: |
  这是一段
  多行文本,
  每行都会保留换行。

summary: >
  这也是一段
  多行文本,
  但会被合并成一行。

四、YAML 中的特殊类型

1. 布尔值

yaml 复制代码
active: true
enabled: false

2. null 值

yaml 复制代码
middle_name: null
# 或者
middle_name: ~

3. 数字

yaml 复制代码
price: 19.99
count: 100
hex: 0xFF  # 十六进制(部分解析器支持)

4. 时间(部分解析器支持)

yaml 复制代码
created_at: 2026-02-02T12:00:00Z

五、YAML vs JSON

特性 YAML JSON
可读性 ⭐⭐⭐⭐⭐ ⭐⭐⭐
支持注释
缩进敏感
字符串必须引号
被广泛用于配置文件 ✅(如 Docker Compose, Kubernetes, Ansible) 较少用于人工编写配置

💡 实际上,所有合法的 JSON 都是合法的 YAML(YAML 是 JSON 的超集)。


六、常见应用场景

  • Docker Composedocker-compose.yml
  • Kubernetes :部署配置文件 .yaml
  • CI/CD 配置 :GitHub Actions (workflow.yml)、GitLab CI
  • Ansible Playbook
  • Spring Boot 配置application.yml

七、验证与编辑建议

  • 在线校验工具https://www.yamllint.com/
  • VS Code 插件:安装 "YAML" 插件(由 Red Hat 提供),支持自动格式化、错误提示、智能补全
  • 缩进设置:确保编辑器将 Tab 转为空格(通常设为 2 空格)

八、小练习(试试看能否写出正确 YAML)

需求:描述一个博客文章,包含标题、作者、标签列表、是否发布、正文内容(多行)。

yaml 复制代码
title: 学习 YAML 入门指南
author: Qwen
tags:
  - yaml
  - config
  - tutorial
published: true
content: |
  这是一篇关于 YAML 的入门文章。
  它介绍了基本语法和常见用法,
  帮助你快速上手!

掌握 YAML 的关键是注意缩进和空格,多写多练即可熟练。它虽然简单,但在 DevOps 和现代开发中无处不在,值得花时间掌握!

相关推荐
萧曵 丶4 天前
前端工程化项目中全类型配置文件的详细解析
前端·javascript·配置文件·工程化
Mr.朱鹏18 天前
Spring Boot 配置文件加载顺序与优先级详解
java·spring boot·后端·spring·maven·配置文件·yml
海棠AI实验室21 天前
第五章 配置管理:用 YAML/ENV 让项目可迁移
python·yaml
Johhny Rade23 天前
一文读懂INI:历史、格式、解析与各语言实现详解
配置文件
科雷软件测试24 天前
推荐几个常用的校验yaml、json、xml、md等多种文件格式的在线网站
xml·html·md·yaml
m0_4887776525 天前
Kubernetes基础
云原生·容器·kubernetes·yaml
江上清风山间明月1 个月前
YAML语法详解
语法·yaml
艺杯羹1 个月前
掌握Spring Boot配置艺术:从YAML基础到实战进阶
java·spring boot·后端·yaml
胡玉洋2 个月前
Spring Boot 项目配置文件密码加密解决方案 —— Jasypt 实战指南
java·spring boot·后端·安全·加密·配置文件·jasypt