开发者工具

JSON ↔ YAML 转换器

在本地将 JSON 转换为 YAML 或将 YAML 转换为 JSON,支持嵌套数组、字符串和精确数字。

输入参数

YAML 1.2 数据转换。不保留注释和格式。输入上限:2 MiB。

计算结果

按预期数据类型转换 JSON 与 YAML

在严格 JSON 和 YAML 1.2 核心语法之间转换 JSON 兼容数据。转换器保留包含大整数的 JSON 数字词元,而非先经 JavaScript 数值转换舍入。转换的是数据值,不是源文档的格式或应用的配置模式。YAML 注释、锚点和展示方式不会在转换为 JSON 后保留。

操作步骤

  1. 粘贴文本,或打开本地 UTF-8 JSON、YAML、YML 或 TXT 文件。明确选择 JSON → YAML 或 YAML → JSON;打开文件不会检测转换方向。
  2. 选择两个或四个空格,可按需排序对象键。处理输入,解决语法或不支持功能的错误。排序递归进行,采用区分大小写的字典顺序;数组顺序不变。
  3. 检查字符串、布尔值、null 和数字,然后复制、打印或下载 converted.yaml 或 converted.json。修改输入或选项会清除旧输出,因此请重新处理。请用实际使用该文件的应用验证转换结果。

设置与限制

类型与文档规则
使用一个 YAML 1.2 文档,包含唯一的字符串键和 JSON 兼容值。"00123" 这样的数字状标识符应加引号;不带引号的 YAML 00123 会变成数字 123。普通的 yes、on 和 ISO 日期文本在核心规则下保持字符串。
别名与不支持的功能
无循环的别名展开为重复的值。循环、重复键、非字符串键、不支持的标签和非有限数会被拒绝。YAML 合并键不生效:<<: *base 变成普通的 "<<" 属性,因此请先展开需要继承的字段。
大小与复杂度
输入上限为 2 MiB UTF-8 文本,即 2,097,152 字节。输出上限为 8 MiB。超过 128 层嵌套、200,000 个值节点或 100 次别名访问时也会停止;小文件同样可能超出这些限制。

操作示例

下载 types-example.json,选择 JSON → YAML,使用两个空格缩进并关闭排序。转换后与 types-example.yaml 比较。加引号的 id 和 word 保持字符串,enabled 保持 false,retries 和 large 保持数字。

示例输入

{"id":"00123","word":"yes","enabled":false,"retries":3,"large":9007199254740993}

预期结果

"id": "00123"
"word": "yes"
"enabled": false
"retries": 3
"large": 9007199254740993

现在打开 types-example.yaml,明确切换为 YAML → JSON,再次处理。id 仍应是 "00123",大整数仍应是 9007199254740993。去掉 YAML 中 00123 两侧的引号并重试:值会变为数字 123。即使两个文件都有效,这种区别对标识符仍然重要。

常见问题与故障排查

为什么其他地方可以格式化的重复键 JSON 在这里失败?

JSON 格式化工具可以保留重复键并给出警告。本转换器拒绝重复键,因为转换为映射可能改变其含义。请决定源数据中应保留的值,并在转换前删除重复项。

注释和 YAML 继承会保留吗?

JSON 没有注释或锚点。别名会展开,合并键则按字面导出,而非应用继承。展开预期数据并检查结果;转换并非忠实重写所有 YAML 功能。

大数在目的应用中安全吗?

转换器保留受支持的数值写法和大整数值,但后续程序可能以更低精度解析。数字状的值如果是标识符,请使用加引号的字符串,并测试目的应用的解析器。