YAML 基础语法详解与示例

admin 2025年5月26日13:17:11评论26 views字数 1706阅读5分41秒阅读模式

YAML 是 “YAML Ain't Markup Language”(YAML 不是标记语言)的递归缩写,最初设计为一种人类友好的数据序列化格式。相比 XML 和 JSON,YAML 更易于阅读和编写,广泛应用于配置文件和数据交换等场景,如前文提到的 Ansible 和 Nuclei。YAML 配置文件通常以 .yml 作为后缀,例如 config.yml。

YAML 基础语法详解与示例

一、YAML 核心特性与应用场景

(一)核心优势

  • 简洁性
    :通过缩进和符号(如 :-)实现结构化,代码量通常比 JSON/XML 更少。
  • 可读性
    :语法接近自然语言,适合人类直接编辑。
  • 语言无关性
    支持多种编程语言(如 Python、Java、Go 等)解析和生成。
(二)典型应用场景

配置文件

  • :替代复杂的 XML/JSON 配置(如 Docker Compose、Kubernetes 配置)。
  • 数据存储
    :用于日志、缓存数据的序列化存储。
  • 元数据描述
    :在 CI/CD 管道(如 GitHub Actions)中定义流程规则。
二、YAML 基础语法规则
(一)通用规则
大小写敏感:Name 与 name 视为不同键名。
缩进规范:
仅使用空格缩进,禁止使用 Tab 键。
层级通过缩进深度区分(同层级元素左侧对齐),缩进空格数无强制要求(通常为 2 或 4 个空格)。
注释:以 # 开头,直至行尾的内容会被解析器忽略。
(二)数据类型与表示方式
YAML 支持三种基本数据结构,可组合形成复杂结构:
1. 对象(映射/字典)
键值对格式:对象键值对使用冒号结构表示 key: value,冒号后面要加一个空格
person:  name: John  age30
也可以使用行内表示法:
person: { name: John, age: 30 }

2. 数组(序列/列表)

列表格式:每个元素以 - (短横线 + 空格)开头

fruits:  - Apple  - Banana  - Cherry

行内表示法:用[ ]包裹元素

fruits: [Apple,Banana,Cherry]

3. 纯量(基本值)

纯量是最基本的,不可再分的值,包括:

字符串

布尔值

整数

浮点数

Null

时间

日期

普通字符串:无需引号(建议包含特殊字符时使用引号)。

str1: 简单字符串 str2: '带空格的字符串 示例'

多行字符串:

|:保留换行符(默认保留末尾换行)

desc: |  第一行  第二行

输出:第一行n第二行n

>:折叠换行(换行转为空格)

desc: >   第一行   第二行

输出:第一行 第二行n

  • 数值
    支持整数、浮点数(123,3.14
  • 布尔值
    true/false(大小写不敏感,但建议小写)
  • 空值
    用 ~或直接留空表示
empty: ~
  • 时间与日期
遵循 ISO 8601 格式(如2023-10-01T12:30:00+08:00)。

(三)高级语法:锚点与引用

通过 &(定义锚点)和 *(引用锚点)避免重复定义相同数据。

defaults: &config # 定义锚点  host: localhost  port: 8080development:  <<: *config # 引用锚点  database: dev_dbtest:  <<: *config  database: test_db

等价于

development:  host: localhost  port8080  database: dev_dbtest:  host: localhost  port8080  database: test_db

三、实践建议与工具

(一)常用工具
在线工具:YAML Validator
(二)最佳实践

引号使用:

字符串包含空格、特殊字符(如 $、#)时必须使用引号。

单引号与双引号的选择:双引号支持转义字符(如 n 表示换行),单引号直接转义(如 '' 表示单引号)。

复杂结构拆分:避免单个 YAML 文件过于庞大,可通过锚点引用或分文件导入(需结合具体工具支持)。

如需进一步了解 YAML 规范细节或其他语言的实现,可访问官方网站 (https://www.yaml.org/) 或相关仓库文档。

参考链接:

https://github.com/yaml/

https://yaml.org/spec/1.2.2/

-End-

如果觉得我的分享有用

[点赞+分享+关注]

原文始发于微信公众号(网络个人修炼):YAML 基础语法详解与示例

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月26日13:17:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   YAML 基础语法详解与示例http://cn-sec.com/archives/4098748.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息