API 响应联调
后端返回 JSON,前端用 YAML 写配置。联调时发现接口返回的嵌套结构(如用户权限树)与本地 YAML 配置结构不一致。把 JSON 粘贴进工具转成 YAML,逐层对比缩进和键名,3 分钟内定位到后端多了一级空对象,而非逐行翻代码。
开发者工具 · JSON / 数据格式
双向互转
在 YAML 配置里粘贴一段 JSON 后,发现缩进全乱、冒号后丢了空格——手动改十层嵌套的缩进,比写代码还折磨。这个工具把 JSON 的括号结构直接转成 YAML 的缩进层级,数组、嵌套对象、空值都能正确映射,反之亦然。转换全程在浏览器本地执行,不经过任何服务器,配置文件里的敏感字段不会离开设备。
后端返回 JSON,前端用 YAML 写配置。联调时发现接口返回的嵌套结构(如用户权限树)与本地 YAML 配置结构不一致。把 JSON 粘贴进工具转成 YAML,逐层对比缩进和键名,3 分钟内定位到后端多了一级空对象,而非逐行翻代码。
项目从 Docker Compose 迁移到 Kubernetes,原 docker-compose.yml 里的 volumes 和 networks 段需要转成 K8s 的 JSON 格式的 ConfigMap。手动改写易漏引号或逗号。把 YAML 段复制到工具转 JSON,粘贴即用,避免因格式错误导致 Pod 拉取失败。
写 workflow 时把 .github/workflows/deploy.yml 某段缩进写歪了,GitHub 报 YAML 解析错误。把 YAML 转成 JSON,JSON 解析器会直接报出具体行号和多余空格位置,而非 YAML 的模糊提示。定位到第 14 行多了一个空格,修复后 30 秒通过。
同事提交的 playbook.yml 有 400 行,要检查 tasks 里是否混用了 JSON 和 YAML 语法(如某些模块参数用 JSON 对象写法)。把整个 playbook 转 JSON,所有混合格式会被统一序列化,一眼看出某个 task 的 dict 键值对写成了数组,避免了运行时参数覆盖。
Swagger 编辑器默认用 YAML 写 API 规范,但评审时同事习惯看 JSON 格式。把 YAML 转成 JSON 后,用 diff 工具对比生成的 JSON 与预期 JSON 结构,发现 /users 接口的 response schema 里少了一个 required 字段。
| 输入 | 输出 | 说明 |
|---|---|---|
| { "name": "张三", "age": 30, "isStudent": false } | name: 张三 age: 30 isStudent: false | 常规:简单对象,验证基本字段类型(字符串、数字、布尔)的转换准确性,无嵌套无数组 |
| { "users": [ {"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"} ] } | users: - id: 1 name: Alice - id: 2 name: Bob | 常规:数组嵌套对象,验证 YAML 列表缩进与 JSON 数组的对应关系,常见于 API 响应 |
| {} | {} | 边界:空对象,验证工具不会报错或输出空行,保持结构一致性 |
| null | null | 边界:JSON 字面量 null,验证工具能否正确处理非对象/数组的顶层值,部分工具会误判为非法输入 |
| { "nested": { "deep": { "value": 42 } } } | nested: deep: value: 42 | 边界:深层嵌套对象,验证缩进层级是否正确,避免多级嵌套时缩进错位 |
| { "message": "Hello\nWorld" } | message: "Hello\nWorld" | 易错:含换行符的字符串,验证 YAML 是否保留转义或使用双引号包裹,避免换行被解释为多行 |
| { "price": 19.99, "count": 100, "ratio": 0.001 } | price: 19.99 count: 100 ratio: 0.001 | 常规:多种数值类型(小数、整数、极小值),验证数值精度不被丢失,YAML 默认不引号包裹数字 |
1.JSON 末尾多余逗号导致解析失败
{"name": "Alice", "age": 30,}{"name": "Alice", "age": 30}JSON 规范(RFC 8259)禁止数组或对象的最后一个元素后出现逗号,而 YAML 允许。工具按 JSON 标准解析,多余逗号会直接报错。
2.JSON 键名未用双引号包裹
{name: "Alice", age: 30}{"name": "Alice", "age": 30}JSON 要求所有键名必须用双引号括起来,这是与 JavaScript 对象字面量的关键区别。不加双引号会被解析器视为语法错误。
3.JSON 字符串内用了单引号代替双引号
{'name': 'Alice', 'age': 30}{"name": "Alice", "age": 30}JSON 标准只接受双引号作为字符串定界符,单引号在 JSON 中是非法字符。YAML 虽支持单引号,但此工具先按 JSON 解析,单引号会导致解析中断。
4.JSON 中使用了注释
{"name": "Alice" /* 这是注释 */}{"name": "Alice"}JSON 官方规范不支持任何形式的注释(// 或 /* */)。虽然 YAML 支持 # 注释,但 JSON 解析器遇到注释会直接抛出语法错误。
5.数值字符串未加引号,被转为数字类型
{"zip": 10001}{"zip": "10001"}JSON 中 10001 是数字类型,转 YAML 后也会保留为数字。若原意是邮编字符串(如 02118),不加引号会导致前导零丢失,语义变化。
6.布尔值或 null 未正确小写
{"active": True, "data": Null}{"active": true, "data": null}JSON 的布尔值和 null 必须全小写(true/false/null)。Python 风格 True/False/None 或 JS 风格 undefined 都不被 JSON 解析器接受。
7.深层嵌套 JSON 未缩进,转 YAML 后层次混乱
{"a":{"b":{"c":1}}}{"a": {"b": {"c": 1}}}虽然 JSON 解析不依赖缩进,但 YAML 对缩进敏感。输入结构清晰(空格分隔键值、适当换行)可避免 YAML 输出因缩进歧义导致解析错误。
YAML = JSON 结构映射为缩进层级 + 键值对
JSON 对象键值对集合,如 {"a":1}缩进层级每层 2 空格,表示嵌套深度YAML 键值对key: value 格式,冒号后空格JSON 输入 {"name":"Alice","age":30,"hobbies":["reading","coding"]} 转换为 YAML: name: Alice age: 30 hobbies: - reading - coding 其中数组元素用短横线缩进表示,每个键值对冒号后跟一个空格,嵌套对象每层增加 2 空格缩进。
可以,直接粘贴到输入框即可。本工具纯前端运行,不限制字符数,但浏览器本身对超大内容(比如几百 KB 以上)的渲染和复制可能会有短暂卡顿,建议分批处理。粘贴后点「转换」按钮,结果会实时显示在右侧。如果 JSON 格式有误,工具会提示具体错误位置,方便修正。
缩进变化是正常的。JSON 里对象用花括号 {} 和逗号分隔,不依赖缩进;YAML 则完全靠缩进表示层级关系。转换时工具会按标准 2 空格缩进输出 YAML。如果你原来的 JSON 缩进是 4 格或 tab,转成 YAML 后缩进量会统一为 2 格,层级关系不变,不是错误。
这是 YAML 标准规定的。JSON 的 null 在 YAML 中有两种等效写法:一个是 ~(波浪号),另一个是直接不写值(即空键值)。本工具默认输出为 null 对应的 YAML 写法,具体是 ~ 还是空行取决于 JSON 原始结构。如果你习惯看显式的 null,可以手动替换回 null,不影响后续解析。
YAML 用短横线 - 表示列表项,对应 JSON 的数组元素。比如 JSON 数组 ["a", "b"] 转成 YAML 会变成: - a - b 每项前面都有一个 - 和一个空格。这是 YAML 的标准写法,不是多出来什么。如果你觉得不习惯,可以手动合并成 JSON 格式的方括号,但那样就不是合规的 YAML 了。
不能直接批量上传文件。本工具是纯前端页面,只处理当前输入框里的内容。如果需要批量转换多个 JSON 文件,可以逐个粘贴转换,或者用脚本批量处理。不过大多数场景下,一次只处理一个 JSON 对象或数组,所以单输入框设计对日常使用足够。如果确实有大量文件要转,建议用本地命令行工具如 yq 或 jq。
不能。标准 JSON 标准(RFC 7159)不允许注释,本工具严格按标准解析。如果 JSON 里包含 // 或 /* */ 注释,工具会报解析错误。建议先手动删掉注释,或者用支持注释的 JSON5 格式处理后再转。如果你经常处理带注释的配置,可以先用其他工具把注释去掉,再粘贴进来。
JSON 对象本身不保证键的顺序(标准里是无序的),但大多数浏览器和工具会按插入顺序保留。YAML 转回 JSON 时,本工具会保持 YAML 中出现的键顺序输出。如果你发现顺序和之前不一样,很可能是 YAML 本身有多个相同键名(YAML 允许重复键,但 JSON 不允许),或者原始 JSON 中键顺序本身就不固定。建议检查原始数据。
常见原因是 YAML 里用了制表符(Tab)缩进。YAML 标准规定只能用空格,不能用 Tab。本工具输出全用空格,但如果你在粘贴后手动编辑过,可能引入了 Tab。另外 PyYAML 对某些边缘语法(如多行字符串、特殊字符转义)处理比较严格。建议用本工具重新转一次,不要手动修改,然后直接复制粘贴到 Python 代码里。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。