YAML 使用入门
创始人
2024-03-02 08:34:58
0

什么是 YAML,为什么我们现在应该开始使用它?

YAML( YAML 不是标记语言 YAML Ain’t Markup Language )是一种适宜阅读理解的数据序列化语言。它的语法简单而易于阅读。它不包含引号、打开和关闭的标签或大括号。它不包含任何可能使人类难以解析嵌套规则的东西。你可以看一下你的 YAML 文档就知道它在什么。

YAML 特性

YAML 有一些超级特性,使其优于其他序列化格式:

  • 易于略读。
  • 易于使用。
  • 可在编程语言之间移植。
  • 敏捷语言的原生数据结构。
  • 支持通用工具的一致模型。
  • 支持一次性处理。
  • 表现力和可扩展性。

我将通过一些例子进一步向你展示 YAML 的强大。

你能弄清楚下面发生了什么吗?

-------
# My grocery list
groceries:
    - Milk
    - Eggs
    - Bread
    - Butter
...

上面的例子包含了一个简单的杂货购物清单,它是一个完全格式化的 YAML 文档。在 YAML 中,字符串不加引号,而列表需要简单的连字符和空格。一个 YAML 文档以 --- 开始,以 ... 结束,但它们是可选的。YAML中的注释以 # 开始。

缩进是 YAML 的关键。缩进必须包含空格,而不是制表符。虽然所需的空格数量是灵活的,但保持一致是个好主意。

基本元素

集合

YAML 有两种类型的集合。列表(用于序列)和字典(用于映射)。列表是键值对,每个值都在一个新的行中,以连字符和空格开始。字典也是键值对,每个值都是一个映射,包含一个键、一个冒号和空格以及一个值。

例如:

# My List
groceries:
    - Milk
    - Eggs
    - Bread
    - Butter

# My dictionary
contact:
    name: Ayush Sharma
    email: myemail@example.com

列表和字典经常被结合起来,以提供更复杂的数据结构。列表可以包含字典,而字典可以包含列表。

字符串

YAML 中的字符串不需要加引号。多行字符串可以用 |> 来定义。前者保留了换行符,而后者则没有。

例如:

my_string: |
    This is my string.
    It can contain many lines.
    Newlines are preserved.
my_string_2: >
    This is my string.
    This can also contain many lines.
    Newlines aren't preserved and all lines are folded.

锚点

YAML 可以通过节点锚点来获得可重复的数据块。& 字符定义了一个数据块,以后可以用 * 来引用。例如:

billing_address: &add1
    house: B1
    street: My Street

shipping_address: *add1

至止你对 YAML 的了解就足以让你开始工作了。你可以使用在线 YAML 解析器来测试。如果你每天都与 YAML 打交道,那么 这个方便的备忘单 会对你有所帮助。

这篇文章最初发表在作者的个人博客上,并经授权改编。


via: https://opensource.com/article/21/9/intro-yaml

作者:Ayush Sharma 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

不允许在此处映射值 - Y...
在YAML中,出现“不允许在此处映射值”的错误通常是由于缩进或格式...
2025-01-11 13:31:20
不要在异步间隔中使用Bui...
在 Flutter 应用程序中,如果您尝试在异步间隔中使用Buil...
2025-01-11 05:00:26
不需要预先编写Java类即...
要解析YAML文件而不需要预先编写Java类,可以使用Jackso...
2025-01-10 16:01:17
部署Yaml文件
部署YAML文件可以通过以下几种方式实现:使用Kubernetes...
2025-01-08 00:31:49
部署时出现的yaml配置文...
在部署Google App Engine Python应用程序时,...
2025-01-07 21:01:46
部署后我的app.yaml...
在部署Node.js应用程序到App Engine标准环境时,如果...
2025-01-07 15:31:16

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...