跳到主内容

JSON ↔ YAML 互转

JSON ↔ YAML 互转

将 JSON 与 YAML 并排编辑,修改任一侧即时同步到另一侧。支持缩进调整、键排序与多文档 YAML 拆分。适用于 Kubernetes/Helm/CI 配置编写与 API 调试。

JSON ↔ YAML 互转

🚀 快速开始

  • 在左侧 JSON 编辑器中粘贴或输入 JSON,右侧 YAML 会自动同步
  • 也可以在右侧 YAML 编辑器中输入 YAML,左侧 JSON 同样会自动同步
  • 两侧完全对等——不需要选择转换方向,编辑哪一侧,另一侧就会自动更新
  • 顶部工具栏可随时调整 JSON/YAML 缩进、是否排序键、是否启用多文档 YAML 拆分
  • 在编辑器中按 Tab 键会插入制表符而非切换焦点,方便直接编辑缩进
  • 每个编辑器右上角有「复制」和「清空」按钮;清空任一侧都会同时清空两侧

📌 常见使用场景

  • Kubernetes 配置编写:将 YAML 格式的 K8s 资源定义转为 JSON 查看结构,或反向操作
  • Helm Values 调试:将 values.yaml 转为 JSON 以便在 IDE 中检查类型和嵌套层级
  • CI/CD 流水线:在 GitHub Actions(YAML)和其他 CI 系统(JSON)之间快速转换配置片段
  • API 调试:将 JSON 格式的响应体转为 YAML 以获得更直观的层级展示
  • 配置迁移:在 YAML 和 JSON 格式的配置文件之间批量转换
  • 格式化 & 校验:利用双向同步快速检验 JSON 或 YAML 是否合法,错误定位到行列

🧭 使用建议

  • JSON 缩进默认 2 空格,适合大多数场景;Helm Values 或深层嵌套推荐使用 4 空格
  • 开启「排序键」后输出键按字母序排列,方便对比两份配置的差异
  • 当 JSON 为数组时,开启「多文档 YAML」可将每个元素拆分为一个独立 YAML 文档(以 --- 分隔),常用于 K8s 多资源文件
  • 输入有误时对应编辑器下方会显示错误提示和行列号,另一侧内容不会被清空
  • 对于较长的文本,建议先粘贴到一侧,等同步完成后再编辑,避免频繁触发转换

⚠️ 限制与兼容性

  • YAML 解析遵循 YAML 1.2 规范;少数 YAML 1.1 特有语法(如 yes/no 自动布尔转换)可能不被识别
  • JSON 数字精度受 JavaScript IEEE 754 限制,超过 53 位精度的大整数可能丢失精度
  • YAML 锚点(&/*/<<)在转为 JSON 后会展开为完整内容,无法保留引用关系
  • YAML 注释在转换过程中会丢失,JSON 规范不支持注释

🔒 隐私与安全

  • 所有处理均在您的浏览器内完成,数据不会离开您的设备

❓ 常见问题

JSON 和 YAML 有什么区别?什么时候该用哪个?

JSON(JavaScript Object Notation)和 YAML(YAML Ain't Markup Language)都是常见的数据序列化格式,能表达相同的数据结构(对象、数组、字符串、数字等),但语法风格不同: • JSON 使用花括号 {}、方括号 [] 和双引号,语法严格,所有键必须加双引号,不支持注释 • YAML 使用缩进表示层级,语法更简洁易读,支持注释(# 开头),但对空格/缩进敏感 选型建议: • API 接口、程序间通信、配置文件需要机器严格解析 → 用 JSON • Kubernetes/Helm/CI 配置、人工频繁编辑的文件 → 用 YAML • 两者可相互转换,数据层面完全等价

为什么 YAML 中的 yes/no/on/off 转成 JSON 后变成了 true/false?

这是 YAML 1.1 的遗留行为——yes、no、on、off、y、n 等被自动解释为布尔值。本工具使用 YAML 1.2 规范,只有 true/false 才会被视为布尔值。如果你的 YAML 来自旧版解析器,可能已经遵循了 1.1 规则。解决方法:用引号包裹值(如 "yes")即可保留为字符串

YAML 注释转为 JSON 后为什么消失了?

JSON 规范(RFC 8259)不支持注释,这是设计者 Douglas Crockford 的有意决定——他认为注释会被滥用于解析指令,影响互操作性。因此 YAML→JSON 转换必然丢失注释,反向转换也无法还原。如需保留注释,建议保存一份 YAML 原始文件

YAML 中的 --- 是什么意思?

--- 是 YAML 的文档分隔符,用于在一个文件中包含多个独立的 YAML 文档。这在 Kubernetes 中非常常见——一个 YAML 文件可以用 --- 分隔多个资源定义(如 Deployment + Service + ConfigMap)。本工具会将多个 YAML 文档转为一个 JSON 数组,每个文档对应数组中的一个元素;反向则可开启「多文档 YAML」选项将 JSON 数组拆分为 --- 分隔的多个文档

转换后数字精度丢失了怎么办?

JavaScript 使用 IEEE 754 双精度浮点数,安全整数范围为 -(2⁵³-1) 到 2⁵³-1(即 ±9007199254740991)。超出此范围的整数在转换时会丢失精度。常见场景:雪花 ID、64 位时间戳等。解决方法:将大整数用引号包裹为字符串(如 "9007199254740992")以避免精度损失

YAML 锚点(& 和 *)转换后会怎样?

YAML 锚点(&name)和引用(*name)是 YAML 独有的复用机制,用于避免重复定义相同内容。转为 JSON 后,所有引用会被展开为完整的内容副本,因为 JSON 没有引用机制。这意味着转换是有损的——反向转换无法还原原始的锚点结构