aspose.info
ZH

YAML 文件格式

更新于

什么是一 .yaml 文件?

YAML 文件 由一种语言 YAML(YAML Ain’t Markup Language)组成,它是一种基于 Unicode 的数据序列化语言;用于配置文件、互联网消息传递、对象持久性等。YAML 对其文件使用 .yaml 扩展名。它的语法独立于特定的编程语言。基本上,YAML 是为人类交互而设计的,并且可以很好地与现代编程语言一起使用。对序列化任意原生数据结构的支持增加了 YAML 文件的可读性,但它使解析和文件生成过程稍微复杂了一点。

历史简介 ##

YAML 于 2001 年首次提出,由 Clark Evans、Ingy döt Net 和 Oren Ben-Kiki 开发。 YAML 最初的意思是“另一种标记语言",以表明其作为标记语言的目的。它后来被重新命名为“YAML Aint Markup Language",以表明其面向数据的目的。

YAML 文件格式##

YAML 文件由以下数据类型组成

  • 标量:标量是字符串、整数、布尔值等值。
  • 序列:序列是每个项目以连字符 (-) 开头的列表。列表也可以嵌套。
  • Mappings:映射提供了列出具有值的键的能力。

### 句法 ###

  • 空白:空白缩进用于表示嵌套和整体结构。
姓名:约翰·史密斯
接触:
家:1012355532
办公室:5002586256
地址:
街道: |
123龙卷风巷
套房 16
城市: 东森特维尔
州:堪萨斯州
  • 评论:评论以“#“符号开头。
# 这是一个 YAML 注释
  • Lists:连字符 (-) 用于指示列表成员,每个成员位于单独的行中。列表成员也可以用方括号 ([…]) 括起来,成员之间用逗号 (,) 分隔。
  - A
  - B
  - C
[A、B、C]
  • 关联数组:关联数组被大括号 ({…}) 包围。键和值用冒号(:) 分隔,每对用逗号(,) 分隔。
  {name: John Smith, age: 20}
  • 字符串:可以使用或不使用双引号 (”) 或单引号 (’) 来编写字符串。
示例字符串
“示例字符串"
'示例字符串'
  • 标量块内容:标量内容可以使用以下块表示法编写:
    • |: All live breaks are significant.
    • >: Each line break is folded to space. It removes the leading whitespace for each line.
数据:|
YAML
(YAML 不是标记语言)
是一种数据序列化语言
数据: ?
YAML(YAML 不是标记语言)
是一种数据序列化语言
  • 多个文档:多个文档在单个流中由三个连字符 (—) 分隔。连字符表示文档的开始。连字符也用于将指令与文档内容分开。文档的结尾用三个点 (…) 表示。
  ---
文件 1
  ---
文件 2
...
  • Type:要指定值的类型,使用双感叹号 (!!)。
答:!!浮点数 123
乙:!!str 123
  • 标签:要为注释分配标签,使用与号 (&) 并引用该节点,使用星号 (*)。
姓名:约翰·史密斯
收单方:&id01
街道: |
123龙卷风巷
套房 16
城市: 东森特维尔
州:堪萨斯州

收货方:*id01
  • 指令:YAML 文档可以在流中以指令开头。指令以百分号 (%) 开头,后跟名称,然后是由空格分隔的参数。
%YAML 1.2
  ---
文件内容

YAML 文件示例

在这里,您可以看到下面的 docker yaml 文件示例:

topology:
database_node_name: docker_controller
docker_controller_node_name: docker_controller
self_service_portal_node_name: docker_controller
kvm_compute_node_names: kvm_compute1
docker_compute_node_names: docker_compute1

YAML 与 JSON

基本上,JSON 和 YAML 都是为了提供人类可读的数据交换格式而开发的。 YAML 被实现为 JSON 格式的超集。这意味着我们可以使用 YAML 解析器解析 JSON。虽然这个理论的实际实施有点棘手。因此,下面给出 YAML 和 JSON 之间的一些基本区别:

YAMLJSON
解析序列化数据的过程复杂耗时使用更简单的设计快速轻松地解析JSON序列化数据
更少的社区支持更大的社区支持和人气
支持评论不支持评论
使用其他数据对象的引用的能力不可能用对象引用序列化复杂结构
使用双空格字符表示层次结构。不允许使用制表符
字符串引号是可选的,但它支持单引号和双引号。字符串必须用双引号。
根节点可以是任何有效的数据类型根节点必须是数组或对象。

参考 ##

另请参阅