什么是YAML

官网(https://yaml.org/)

YAML 语言创建于 2001 年,比 XML 晚了三年。YAML虽然在名字上模仿了XML,但实质上与XML完全不同,更适合人类阅读,计算机解析起来也很容易。

JSON是YAML的子集,YAML支持整数、浮点数、布尔、字符串、数组和对象等数据类型。

也就是说,任何合法的JSON文档也都是YAML文档,如果你了解JSON,那么学习YAML会容易很多。

但和JSON比起来,YAML的语法更简单,形式也更清晰紧凑,主要有如下规则:

  • 使用缩进表示层次,缩进不允许使用tab,只能用空格,缩进空格数多少不要求,只要保证同一层级空格数一样多即可
  • 使用 # 书写注释
  • 数组(列表)是使用 - 开头的清单形式
  • 对象(字典)的格式与JSON基本相同,但Key不需要使用双引号。
  • 表示对象的 : 和表示数组的 - 后面都必须要有空格。
  • 可以使用 --- 在一个文件里分隔多个YAML对象。

YAML示例

1、YAML数组(列表)

ProgrammingLanguages:
  - Python
  - Java
  - JavaScript

对应json是这样的:

{
  "ProgrammingLanguages": [
    "Python",
    "Java",
    "JavaScript"
  ]
}

2、YAML对象(字典)

CloudResources:
  virtualMachines: 5
  storageAccounts: 2

对应json是这样:

{
  "CloudResources": {
    "virtualMachines": 5,
    "storageAccounts": 2
  }
}

3、组合数组和对象

DataCenter:
  primary:
    - database: active
    - cache: active
  secondary:
    - webserver: active
    - load-balancer: inactive
    - storage-drivers: [s3, ceph, glusterfs]

对应json为:

{
  "DataCenter": {
    "primary": [
      {
        "database": "active"
      },
      {
        "cache": "active"
      }
    ],
    "secondary": [
      {
        "webserver": "active"
      },
      {
        "load-balancer": "inactive"
      },
      {
        "storage-drivers": ["s3", "ceph", "glusterfs"]
      }
    ]
  }
}

用一张图来总结YAML

YAML