您的位置:

了解YAML转换:从语法到工具

一、基本语法

YAML 是一种标记语言,意为 “YAML Ain’t Markup Language”(YAML 不是标记语言)。它使用空格(缩进)来表示层次结构,用冒号表示键值对,使得其语法简洁优雅。下面来看一个 YAML 文件的例子:

# A list of fruits
fruits:
  - Apple
  - Orange
  - Banana

# A mapping of employee information
employee:
  name: John Doe
  age: 26
  gender: Male
  department: Sales

通过这个例子,我们可以看到 YAML 格式的特点:

  • 使用缩进来表示层次结构;
  • 使用冒号来表示键值对;
  • 使用 # 来注释。

二、数据类型

YAML 支持多种数据类型,包括字符串、数字、布尔值、时间、null 等,下面来一个一个介绍。

1. 字符串

YAML 字符串可以使用单引号或双引号包裹,使用双引号的字符串支持转义字符和特殊符号,例如:

# Single quotes
str1: 'This is a string'

# Double quotes
str2: "This is another string with a \n line break and a \t tab"

2. 数字

YAML 支持整数和浮点数,没有复数和科学计数法,例如:

# Integer
num1: 123

# Float
num2: 3.14

3. 布尔值

YAML 支持 true 和 false 两种布尔值,例如:

# true
bool1: true

# false
bool2: false

4. 时间

YAML 时间使用 ISO 8601 格式表示,例如:

# Date
date: 2022-01-01

# Time
time: 08:30:00

# Datetime
datetime: 2022-01-01T08:30:00Z

5. null

YAML 支持 null,表示空值,例如:

# Null
null1: null
null2:

三、工具

除了手写 YAML 文件,我们也可以使用一些工具来帮助我们生成、解析和验证 YAML 文件。

1. YAML To JSON 转换器

这是一个在线工具,可以将 YAML 文件转换为 JSON 格式。它支持将 YAML 文件从本地上传,也支持将 YAML 文件从 URL 导入,非常方便实用。链接:https://www.convertjson.com/yaml-to-json.htm

2. PyYaml 库

PyYaml 是 Python 语言的一个 YAML 库,可以方便地将 YAML 文件转换为 Python 对象,或将 Python 对象转换为 YAML 文件。

下面是一个将 YAML 文件转换为 Python 对象的示例:

import yaml

with open('data.yaml', 'r') as f:
    data = yaml.load(f, Loader=yaml.FullLoader)

print(data)

下面是一个将 Python 对象转换为 YAML 文件的示例:

import yaml

data = {
  'fruits': [
    'Apple',
    'Orange',
    'Banana'
  ],
  'employee': {
    'name': 'John Doe',
    'age': 26,
    'gender': 'Male',
    'department': 'Sales'
  }
}

with open('data.yaml', 'w') as f:
  yaml.dump(data, f)

3. YAML Validator

YAML Validator 是一个在线工具,可以验证 YAML 文件的语法是否正确,非常实用。链接:http://www.yamllint.com/

总结

YAML 是一种简洁优雅的标记语言,使用缩进和冒号表示层次结构和键值对,支持多种数据类型,包括字符串、数字、布尔值、时间和 null。我们可以使用 PyYaml 库将 YAML 文件转换为 Python 对象,或将 Python 对象转换为 YAML 文件;使用 YAML Validator 工具验证 YAML 文件的语法是否正确。