65.9K
CodeProject 正在变化。 阅读更多。
Home

五分钟学会 YAML!

starIconstarIconstarIconstarIconstarIcon

5.00/5 (10投票s)

2017年12月28日

CPOL

4分钟阅读

viewsIcon

160779

这篇速读文章将在您泡一杯茶的时间内教会您 YAML 标记语言的基础知识 :)

引言

如果你还没有接触过 YAML,请稍作停留,你很快就会遇到它了。我最近看到很多组织和项目都在采用它,因此值得了解一下。 YAML 是一种面向数据的人类可读的序列化语言,我在许多项目中都遇到过它,包括 OpenAPI、Docker、Kubernetes 和 Ansible playbook 等。

YAML 最初是“Yet Another Markup Language”(另一种标记语言)的缩写,但现在更常被称为“YAML Ain't Markup Language”(YAML 不是标记语言)(有点像 GNU is not unix!,或者 Bing! is not google!)。

下面的快照说明了我们将要介绍的一些基础知识。
 

本文旨在为您提供 YAML 的简要概述 - 足以让您入门。 还有很多内容和一些复杂性,您可以在 YAML 网站上找到相关信息。

YAML 元素

从上图可以看出,YAML 文件由许多不同的元素构成。 它们一起可以用来描述各种各样的结构。 我见过 YAML 用于描述从跨语言类、API 数据结构到虚拟机和容器的部署指令的所有内容。

YAML 元素主要基于键值对。 我们可以将它们视为严格的 KV

名称: 值

或者一个带有复杂/复合值的键

名称: < 键<br />      另一个名称: 一些值 < 值

YAML 是 JSON 的超集,因此我们可以在构造中使用 JSON 风格的序列和映射

a_json_style_map: {"K": "V"}<br /> a_json_style_sequence: ["pink", "red", "red", "cat", 123, 234, 345]

空格/缩进

这是一个非常非常大的陷阱 - 它会坑你,所以一定要知道!......在 YAML 中,你用空格缩进,而不是制表符。此外,元素部分之间必须有空格。

例如,这是正确的

键: 值

但这样做会失败

键:值
     ^^ 冒号后面没有空格!
 

开始/结束文档

定义文档的开头和结尾是可选的。 要开始一个文档,请在文档顶部插入“---”,要结束文档,请插入“...

注释

注释是通过在项目前面放置一个井号 '#' 来定义的。 注释可以在一行的开头或一行的任何位置进行

# 这是一个注释<br /> 键: 值   #这是另一个注释

标量

简单的 KV 对属于此类别,以下是一些示例,它们非常多样化和灵活。

键: 值
一些数字: 299
带引号的文本: "一些文本描述"
更多带引号的文本: 字符串不必用引号引起来,但我更喜欢这样做=
布尔值: true
我们也可以在键中包含空格:以及在值中
空键值: null


集合 & 列表

列表和集合成员是在同一缩进级别开始的行,以破折号后跟一个空格开始。

# 一个豪华车的集合<br /> 豪华车<br />    - 保时捷<br />    - 阿斯顿·马丁<br />    - 宾利

多行集合

可以通过放置一个问号,后跟一个管道符号来标记复杂键的开始,从而容纳复杂键

? |<br />       正在开始一个复杂<br />       的键,包含许多<br />       行<br /> : 并且这是值!


嵌套集合

您也可以有深度嵌套的集合

# 汽车信息<br /> - 驾驶员<br />       姓名: Francis Black<br />       年龄: 21<br />       驾照类型:<br />           - 完整的汽车驾照<br />           - 赛车执照方程式V : 详情<br />             执照 ID: ABC12345<br />             过期日期: 2017-12-28   

字典

字典包含键:值格式,内容缩进。

汽车详情:<br />      制造商: 保时捷<br />      型号: 911<br />      燃料: 汽油

您可以像这样合并和混合列表和字典的集合

# 汽车信息<br /> - 驾驶员<br />       姓名: Francis Black<br />       年龄: 21<br />       驾照类型:<br />           - 完整的汽车驾照<br />           - 赛车执照方程式V

 

总结

这就是最基本的内容,如果您需要更深入地挖掘,这里有一些有用的资源

YAML 规范
YAML 与 Ansible
YAML 与 Kubernetes
Docker Compose 文件和 YAML
​​​​
YAML 维基百科
YAML 到 JSON 在线转换器实用程序
在线 YAML 解析器 (通过玩这个你可以学到很多!)

历史

版本 1 -  2017 年 12 月 28 日

© . All rights reserved.