yaml基础知识(YAML快速指南)(1)

YAML(“YAML Ain't Markup Language”的缩写)是一种数据序列化格式,用于在不同系统和编程语言之间存储和交换数据。YAML 被设计为易于人类阅读,使其成为旨在供人们阅读的数据的不错选择。

在这里,我想了解一下 YAML 的基本特性以及它在 DevOps 工具中被广泛使用的原因。

什么是 YAML?

在 YAML 发展之初,它是作为“Another Markup Language”的缩写而得名的。后来,创作者决定将其改为“YAML Ain't Markup Language”,以区别于真正的标记语言并避免混淆。

该语言类似于 XML 和 JSON,但在保持类似功能的同时使用更简约的语法。YAML 通常用于在基础架构即代码 (IAC) 程序中创建配置文件或在 DevOps 工作中管理容器。

在大多数情况下,YAML 用于创建可以执行 YAML 文件中编写的命令序列的自动化协议。这使您的系统更加独立和响应迅速,而无需额外的开发人员关注。

越来越多的公司正在使用 DevOps 和虚拟化,因此 YAML 是现代开发人员的必备工具。此外,YAML 易于集成,支持 Python(使用 PyYAML 库、Docker 或 Ansible)和其他流行技术。

现在让我们看看 YAML、JSON 和 XML 之间的主要区别是什么。

YAML 与 JSON 与 XML

首先,我将列出YAML语言的一些基本特征,我认为这些特征可以将其与其他语言区分开来:

作为附加功能,我提到了可扩展数据类型、相对锚点和保留键顺序的类型映射。

YAML 非常适合使用 DevOps 管道或虚拟机的数据密集型应用程序。此外,提高数据可读性对于开发人员经常与他们交互的团队是有益的。

例如,与 YAML 相比,XML可以通过以下方式进行描述:

通常,XML 非常适合需要对验证、架构和名称空间进行精细控制的复杂项目。该语言的可读性很差,需要更多的带宽和存储容量,但提供了前所未有的控制。

至于JSON,与 YAML 相比,它的特点是:

JSON 通常用于 Web 开发,它是通过 HTTP 连接序列化和传递数据的最佳格式。

在我们了解了上述三种语言之间的差异之后,我想指出许多开发人员喜欢的 YAML 的一些最显着的特性。

YAML 的显着特征

多文档支持您可以将多个 YAML 文档合并为一个 YAML 文件,以便于文件组织和数据解析。

文档由三个破折号 (— -) 分隔:

--- player: playerOne action: attack (miss) --- player: playerTwo action: attack (hit) ___

易于阅读的语法 YAML 文件的语法使用类似于 Python 的缩进系统。您必须使用空格而不是制表符,以避免混淆。这样可以去除 JSON 和 XML 中的额外字符(引号、方括号和大括号)。结果,文件的可读性大大提高:

#YAML Imaro: author: Aldous Huxley language: English publication-year: 1932 pages: 311

现在将其与 JSON 格式进行比较:

#JSON { "Imaro": { "author": "Aldous Huxley", "language": "English", "publication-year": "1932", "pages": 311 } }

缺少可执行文件YAML 不包含可执行文件。因此,与第三方交换 YAML 文件是安全的。要使用可执行文件,YAML 需要与其他语言集成,例如 Perl 或 Java。

注释支持YAML 允许您在字符后添加注释#,就像在 Python 中一样:

key: #This is a single line comment - value line 2 #This is #a multiline comment - value line 21

显式和隐式类型YAML 提供自动类型检测和显式指定数据类型的能力。要使用具体类型,!![typeName]请在值之前写入。

# This value has been converted to an int: 14.10 is-an-int: !!int # Converts any value to a string: 67.43 is-a-str: !!str # Must be a boolean value: is-a-bool: !!yes bool

YAML 语法

键值对YAML 使用键值对来表示数据,类似于 Python 中的字典。例如:

key1: value1 key2: value2 key3: value3

字符串“字符串”是可以包含单词或句子的字符集合。您可以将其|用于单行或>段落。YAML 中不需要引号。

str: Hello World data: | This Separate strings data: > This one paragraph text

字典YAML 支持字典,可以使用键值对表示。字典允许您将数据划分为逻辑类别。例如:

key1: value1 key2: key3: value3 key4: value4

字典可以包含更复杂的结构,允许您存储复杂的关系数据。

序列序列是类似于列表或数组的数据结构,在同一键下存储多个值。它们使用缩进或定义[]。

animals: - dog - cat - elephant

单行序列看起来更简洁但可读性较差:

animals: [dog, cat, elephant]

标量和映射标量是名称对应的单个值。YAML 支持标准类型:intand float、boolean、string和null。它们可以用不同的方式表示:十六进制、八进制或指数。还有用于数学实体的特殊类型,例如 infinity、-infinity 和 NAN。

integer: 25 hex: 0x12d4 #equal to 4820 octal: 023332 #equal to 9946 float: 25.0 exponent: 12.3015e 05 #equal to 1230150.0 boolean: Yes string: "25" infinity: .inf # converts to infinity neginf: -.Inf #converts to minus infinity not: .NAN #Not a Number null: ~

YAML 还能做什么?

YAML 除了上述的特性外,还有:

YAML 语法旨在简单易用,使其成为供人类阅读的数据的流行选择。通过使用缩进和键值对,YAML 能够表示范围广泛的数据类型。

YAML 的主要优点之一是它的可读性。YAML 旨在尽可能简洁,同时仍然易于理解。这使得它成为供人类读取的数据(例如配置文件)的不错选择。

YAML 的另一个好处是它与许多流行的 DevOps 工具集成,例如 Ansible、Docker 和 Kubernetes。这些工具使用 YAML 来定义配置文件,使其成为在这些领域工作的任何人的宝贵技能。

结论

总之,YAML 是一种人类可读的数据序列化格式,用于在不同系统和编程语言之间存储和交换数据。它广泛用于 DevOps 工具,并因其简单性、可读性和灵活性而受到重视。

,