JSON 转 YAML 转换器

粘贴 JSON,得到含义完全相同、易于阅读的 YAML:保持键的顺序,并在 YAML 解析器可能误读的地方给值加上引号。

输入
输出

    数据不会离开你的浏览器。快捷键:Ctrl/⌘ + Enter 执行主操作。

    JSON 如何对应到 YAML

    JSON 和 YAML 描述的是同一种数据模型:映射(即 JSON 对象)、序列(即 JSON 数组)和标量(字符串、数字、布尔值和 null)。YAML 1.2 的设计保证了每个 JSON 文档同时也是合法的 YAML 文档,因此转换不会丢失任何信息。转换器以块样式输出 YAML:每个键独占一行,用缩进表示嵌套,列表项以 - 开头。

    JSONYAML
    {"name": "api", "port": 8080}name: api
    port: 8080
    {"tags": ["a", "b"]}tags:
      - a
      - b
    {"empty": {}, "none": []}empty: {}
    none: []
    {"v": null, "ok": true}v: null
    ok: true
    {"code": "0755", "n": "123"}code: "0755"
    n: "123"

    如何将 JSON 转为 YAML

    1. 粘贴 JSON,或打开一个 .json 文件。工具会先进行校验,错误会连同行号一起列出,“修复 JSON”可以自动修正常见错误。
    2. 选择 2 或 4 个空格缩进,以及是否对键排序。
    3. 点击“转为 YAML”。复制结果,或下载为 data.yaml。

    示例:一个包清单文件

    {"name": "web", "version": "1.10", "scripts": {"build": "vite build"}, "private": true}

    会转换为

    name: web
    version: "1.10"
    scripts:
      build: vite build
    private: true

    version 仍然带引号,因为不加引号的 1.10 在读回时会被解析成数字 1.1。

    为什么要把 JSON 转为 YAML?

    反向转换请使用 YAML 转 JSON;转换后若要整理 YAML,请使用 YAML 格式化工具。

    JSON 转 YAML 常见问题

    所有 JSON 文件都能转换为 YAML 吗?

    可以。YAML 1.2 是 JSON 的超集,任何合法的 JSON 都能用 YAML 表示;实际上合法的 JSON 本身就是合法的 YAML。转换只是改用 YAML 基于缩进的块样式,更易于阅读和编辑。

    为什么 YAML 输出中有些字符串带引号?

    如果不加引号会改变字符串的类型,就会加上引号:"123"、"true" 和 "null" 必须保持为字符串;而 "yes"、"no"、"on"、"0755" 或 "22:22" 这类值也会加引号,因为 YAML 1.1 解析器会把它们读成布尔值或数字。其余值都不带引号输出。

    键的顺序会保留吗?

    会。除非勾选“键排序”,键的顺序与 JSON 中完全一致。看起来像数字的键("2"、"10")也保持原有顺序;转换器不经过 JavaScript 对象,因此不会被重新排序。

    大数字会怎样处理?

    原样保留。JSON 中的 12345678901234567890 在 YAML 中仍是 12345678901234567890,而不会被四舍五入为 12345678901234567000。

    可以把 YAML 再转回 JSON 吗?

    可以。在输出区点击“用作输入”,或打开 YAML 转 JSON 转换器。转回后得到的数据与原始数据完全相同。