主页
文章
知识库
云盘
工具
登录
登录
注册
忘记密码
反馈
文章
YAML 教程
YAML 教程
lyjin
2025-02-08
## 1. YAML 简介 YAML(YAML Ain't Markup Language)是一种简洁易读的数据序列化格式,广泛用于配置文件、数据存储等场景。它支持键值对、列表、嵌套结构,易于阅读和编辑。 ## 2. YAML 语法基础 ### 2.1 键值对 YAML 采用 `key: value` 形式表示键值对,冒号后需要有一个空格。 ```yaml name: John Doe age: 30 location: Earth ``` ### 2.2 缩进 YAML 使用缩进表示层级关系,通常使用两个空格,不允许使用 Tab。 ```yaml person: name: Alice age: 25 address: city: New York zip: 10001 ``` ### 2.3 列表 使用 `-` 表示列表项,列表项之间需要相同缩进。 ```yaml languages: - Python - JavaScript - Go ``` 也可以使用 `[]` 表示列表: ```yaml languages: [Python, JavaScript, Go] ``` ### 2.4 多行字符串 使用 `|` 表示保留换行符的字符串,`>` 表示折叠换行符。 ```yaml description: | 这是一个多行字符串。 每行都会被保留。 summary: > 这也是一个多行字符串。 但换行符会被折叠。 ``` #### 2.4.1 去掉多行字符串的最后一行换行 如果想去掉最后的换行符,可以使用 `|-`(保留换行但去掉末尾换行)或 `>-`(折叠换行并去掉末尾换行)。 ```yaml text1: |- 第一行 第二行 第三行 ``` **输出:** ``` 第一行 第二行 第三行 ``` ```yaml text2: >- 第一行 第二行 第三行 ``` **输出:** ``` 第一行 第二行 第三行 ``` ### 2.5 注释 使用 `#` 表示注释。 ```yaml # 这是一个 YAML 文件 name: John Doe # 用户名 ``` ## 3. 复杂数据结构 ### 3.1 字典(对象) 字典可以嵌套定义: ```yaml person: name: Alice age: 25 contact: email: alice@example.com phone: 123-456-7890 ``` 也可以使用 `{}` 语法: ```yaml person: {name: Alice, age: 25} ``` ### 3.2 复杂列表 列表中可以包含字典: ```yaml employees: - name: Alice age: 25 - name: Bob age: 30 ``` ## 4. YAML 高级特性 ### 4.1 变量引用(锚点 & 别名 *) YAML 允许使用 `&` 定义锚点,`*` 进行引用,避免重复数据。 ```yaml defaults: &defaults role: user active: true user1: name: Alice <<: *defaults user2: name: Bob <<: *defaults ``` ### 4.2 环境变量 某些 YAML 解析器支持环境变量: ```yaml database: host: ${DB_HOST} port: ${DB_PORT} ``` ### 4.3 多文档分隔符 使用 `---` 分隔多个 YAML 文档。 ```yaml --- name: Alice age: 25 --- name: Bob age: 30 ``` ## 5. YAML 使用场景 - **配置管理**(Kubernetes, Docker Compose, Ansible) - **数据存储**(如 API 响应、日志格式化) - **对象序列化**(如 Python 的 PyYAML 库) ## 6. YAML 与 JSON 互换 YAML 是 JSON 的超集,可以相互转换。 ```yaml person: name: Alice age: 25 ``` 等同于 JSON: ```json { "person": { "name": "Alice", "age": 25 } } ``` ## 7. YAML 解析工具 ### 7.1 Python 解析 YAML 使用 `PyYAML` 库解析 YAML: ```python import yaml with open("config.yaml", "r") as file: data = yaml.safe_load(file) print(data) ``` ### 7.2 命令行解析 YAML 使用 `yq` 解析 YAML(类似 `jq` 解析 JSON): ```sh yq eval '.person.name' config.yaml ``` ## 8. 总结 YAML 是一种简洁、可读性强的数据格式,广泛应用于配置管理和数据存储。掌握 YAML 的基本语法、数据结构和解析工具,可以更高效地使用它。
分享
×
用手机扫码分享
没有评论
请登陆后评论
新建评论
移除
关闭
提交