什么是YAML(什么是yaml文件)

什么是YAML(什么是yaml文件)

浏览次数:
信息来源: 用户投稿
更新日期: 2026-02-08
文章简介

大多数格式化语言以非人类可读的格式显示数据。即使是最流行的数据格式JSON,其代码可读性也很差。YAML是JSON的替代方案,它以自然、易于阅读和简洁的方式格式化数据。本文将向您介绍YAML标记语言。

2025阿里云双十一服务器活动

大多数格式化语言以非人类可读的格式显示数据。即使是最流行的数据格式JSON,其代码可读性也很差。YAML是JSON的替代方案,它以自然、易于阅读和简洁的方式格式化数据。本文将向您介绍YAML标记语言。我们介绍了这种标记语言背后的基本概念,解释了它的主要特性,并展示了YAML提供了什么。

YAML是一种数据序列化语言。早在2001年问世时,YAML就代表“又一种标记语言”。该首字母缩写词后来更改为“?YAMLAin'tMarkupLanguage?”,以强调该语言旨在用于数据而不是文档。

它不是真正意义上的编程语言。YAML文件存储信息,因此它们不包括操作和决策。

与XML或JSON不同,YAML以一种易于人类阅读的方式呈现数据。简单的语法不会影响语言的功能。添加到XML或JSON文件的任何数据或结构也可以存储在YAML中。

除了人类可读的代码外,YAML还具有以下特点:

  • 跨语言数据可移植性
  • 用户可以用任何编程语言编写代码来读取和生成YAML。YAML中的扩展名是.yaml.yml。两个扩展名代表相同的文件类型。

    YAML具有多项功能,使其成为数据格式化的绝佳选择。

    用户可以将多个文档添加到单个YAML文件中。用三个破折号()分隔不同的文档,如下所示:

    三个点(“?……?”)标记文档的结尾,而不是开始一个新的。

    YAML允许用户在他们的代码中添加注释。YAML注释以?符号开头,不必位于单独的行:

    与Python一样,YAML依赖缩进来显示数据中的级别和结构。没有常用的格式符号,例如大括号、方括号、结束标记或引号。语法简洁且易于浏览。

    简洁的语法是一些流行工具依赖YAML的原因,例如Ansible、Kubernetes和OpenStack。

    YAML不允许制表符。空格是实现缩进的唯一方法。

    最好在文本编辑器中显示空白字符,以防止意外使用制表符。

    YAML反馈是指文件中的特定行。当您知道在哪里查找时,您可以快速找到并修复错误。

    YAML提供了引用其他数据对象的能力。通过引用,您可以在YAML文件中编写递归数据并构建高级数据结构。

    YAML自动检测数据类型,但用户可以自由指定他们需要的类型。要指定数据类型,请包含“!!”?象征:

    #下一个值应该是一个布尔值:

    is-a-bool:!!bool是的

    YAML是一种数据表示格式。没有可执行命令,这使得该语言在与第三方交换文件时非常安全。

    如果用户希望添加可执行命令,YAML必须与其他语言集成。例如,添加Perl解析器以启用Perl代码执行。

    YAML匹配敏捷方法的原生数据结构及其语言,例如Perl、Python、PHP、Ruby和JavaScript。它还派生了其他语言的功能:

  • 标量、列表和数组来自Perl。
  • 三破折号分隔符来自MIME。
  • 空格包装来自HTML。
  • YAML支持所有基本数据类型,包括空值、数字、字符串、数组和映射。它识别一些特定于语言的数据类型,例如日期、时间戳和特殊数值。

    冒号和一个空格定义一个标量(或变量):

    字符表示保留换行符的字符串,字符?表示折叠换行符的字符串:

    除了基础知识之外,您还需要了解YAML中两种重要的结构类型:

    在YAML中使用这两种结构进行格式化。

    什么是YAML,什么是yaml文件

    这是相同文件打开的JSON等价物:

    两个代码都有两个值,和,映射到两个键,?和。在YAML中,引号是可选的,并且没有括号。

    这种标记语言允许您通过创建映射到另一个映射而不是字符串的键来指定更复杂的结构。请参阅下面的YAML示例:

    我们有一个键(?)和另外两个键作为它的值和。该?键具有另一个映射作为其值。YAML允许您根据需要嵌套地图。

    空格的数量无关紧要,但它必须在整个文件中保持一致。在我们的示例中,为了便于阅读,我们使用了两个空格。并且具有相同的缩进级别,因此处理器知道两者都是同一映射的一部分。

    相同的映射在JSON中如下所示:

    YAML列表是一系列项目。例如:

    一个列表可以包含任意数量的项目。项目以破折号开头,而缩进将其与父项分开。您还可以将地图存储在列表中:

    图片:nickchase/rss-php-nginx:v1

    我们有一个容器(对象)列表。每个都由名称、图像和端口列表组成。ports下的每一项都是一个映射,列出了?及其值。

    我们的示例在JSON中看起来像这样:

    {“apiVersion”:“v3”,“kind”:“Pod”,“元数据”:{“name”:“rss-site”,“labels”:{“app”:“web”}},“spec”:{“containers”:[{“name”:“front-end”,“image”:“nginx”,“ports”:[{“containerPort”:“80”}]},{“name”:“rss-reader”、“image”:“nickchase/rss-php-nginx:v1”、“ports”:[{“containerPort”:“88”}]}]}}

    JSON和YAML可以互换使用,它们的用途相同。两者之间存在显着差异:

    空格字符决定层次结构

    方括号和大括号表示数组和对象

    字符串引号支持单引号和双引号

    字符串必须用双引号

    根节点可以是任何有效的数据类型

    根节点是一个对象或一个数组

    YAML和JSON的主要区别在于代码的可读性。最好的例子是官方YAML主页。该网站本身是有效的YAML,但人类很容易阅读。

    YAML是JSON的超集。如果将JSON直接粘贴到YAML文件中,它会通过YAML解析器解析相同的内容。用户还可以在两种格式之间转换大多数文档。可以在线将JSON文件转换为YAML,也可以使用Syck或XS等工具。

    YAML是为InfrastructureasCode编写配置文件时的常用选项。这些文件存储所需云环境的参数和设置。

    RedHat的Ansible是最受欢迎的IaC工具之一,它使用YAML进行文件管理。Ansible用户创建所谓的用YAML代码编写的剧本,这些剧本可以自动执行配置和部署云环境的手动任务。

    在下面的示例中,我们定义了一个Ansible剧本verify-apache.yml

    -名称:确保apache是最新版本

    -名称:编写apache配置文件

    -名称:确保apache正在运行

  • ?我们使用该命令将Apache更新到最新版本。
  • 我们使用模板来复制Apache配置文件。然后playbook重新启动Apache服务。
  • 我们启动Apache服务。
  • 设置后,将从命令行运行剧本。虽然路径因设置而异,但以下命令运行playbook:

    ansible-playbook-i主机/组verify_apache.yml

    标签:
    什么是数据中心层(何为数据中心)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!