JSONYAML

JSON 转 YAML

YAML是一种人类可读的数据序列化标准

相似工具
JSON在线格式化验证
JSON 转 TypeScript
JSON 转 JSON Schema
JSON 转 Big Query
JSON 转 Mysql
JSON 转 Dart
JSON 转 GO
JSON 转 Kotlin
JSON 转 Flow
JSON 转 io ts
JSON 转 Scala Case Class
JSON 转 Sarcastic
JSON 转 Rust serde

YAML (YAML Ain't Markup Language) 是一种直观且易于理解的数据序列化格式。它通常用于配置文件、数据传输、存储结构化数据,并且在许多现代编程语言和工具中广泛应用。YAML 的设计目标是让文件易于阅读和编写,同时保持足够的表达能力。

YAML 的特点和优势

  1. 人类可读性强:YAML 的语法设计非常接近自然语言,减少了标点符号和复杂的语法结构,使得文件非常易读。

  2. 轻量级:YAML 文件通常比较简洁,只需要通过缩进和一些简单的符号即可表达复杂的数据结构。

  3. 语言无关:YAML 本质上是一个通用的数据格式,可以被多种编程语言解析和生成,使其在跨平台和跨语言的项目中很有用。

  4. 结构化数据支持:YAML 支持复杂的数据结构,如字典、列表、嵌套结构等,可以轻松地表达配置和数据模型。

  5. 与 JSON 兼容:YAML 的设计与 JSON 非常接近,所有合法的 JSON 都是合法的 YAML。这使得 YAML 和 JSON 之间的转换非常简单。

YAML 的基本语法

1. 键值对

键值对是 YAML 中最基本的元素。它们用 key: value 的形式表示:

name: John Doe
age: 30

2. 列表

YAML 中的列表用 - 表示列表项:

languages:
  - Python
  - JavaScript
  - Go

3. 字典

字典(或映射)用于表示键值对的集合,可以嵌套使用:

address:
  city: New York
  zipcode: 10001

4. 嵌套结构

YAML 使用缩进表示嵌套结构,这样可以轻松表示更复杂的数据层次:

person:
  name: John Doe
  age: 30
  address:
    city: New York
    zipcode: 10001

5. 注释

注释用 # 开头,注释内容不会被解析:

# 这是一个注释
name: John Doe # 这是一个带注释的键值对

6. 多行字符串

YAML 支持使用 |> 来表示多行字符串:

description: |
  This is a
  multi-line
  string.

7. 锚点与别名

YAML 提供了锚点(Anchor)和别名(Alias)来复用数据结构:

default: &default_settings
  host: localhost
  port: 8080

production:
  <<: *default_settings
  host: production-server

在这个例子中,default 键下的设置被定义为一个锚点 &default_settings,然后在 production 中通过 <<: *default_settings 引用该锚点,并可以进行局部覆盖。

YAML 的使用场景

  1. 配置文件: YAML 是许多应用程序和框架的默认配置格式,例如:

    • CI/CD 工具:如 GitLab CI、Travis CI 使用 YAML 文件定义流水线和任务。
    • 容器编排工具:如 Kubernetes 使用 YAML 文件描述资源定义(如部署、服务)。
    • Web 应用框架:如 Django 使用 YAML 文件进行应用配置。

    示例:

    server:
      host: localhost
      port: 8080
    
    database:
      engine: postgresql
      host: localhost
      port: 5432
      username: user
      password: secret
    
  2. 数据交换: YAML 被用作一种轻量级的格式来交换复杂的数据结构,特别是在 API 设计中,如 OpenAPI(以前称为 Swagger)使用 YAML 来定义 API 规范。

    示例:

    openapi: 3.0.0
    info:
      title: Sample API
      version: 1.0.0
    paths:
      /users:
        get:
          summary: List all users
          responses:
            '200':
              description: A JSON array of user names
    
  3. 文档生成: 一些自动化工具使用 YAML 文件来生成文档或描述数据结构。例如,Jekyll 使用 YAML 前言来为静态站点生成元数据。

  4. 容器化配置: Docker Compose 使用 YAML 文件定义和运行多容器 Docker 应用程序。

    示例:

    version: '3'
    services:
      web:
        image: nginx
        ports:
          - '80:80'
      redis:
        image: redis
    

YAML 是一种强大且灵活的数据序列化格式,广泛应用于配置文件、数据交换和文档生成等场景。它以易读、简洁和兼容性强著称,支持各种复杂数据结构,并且在现代开发环境中被广泛使用。无论是配置服务器、定义 API 规范,还是编排容器化应用,YAML 都是一个不可或缺的工具。