JSON.parse() 毫不留情:一个错位的逗号、一个未加引号的键、一个把 true 写成了 True,整个应用就停摆。在线 JSON 修复器让你贴入坏掉的 JSON,自动识别并修复错误,再复制回干净、合法的 JSON —— 不需要碰你的代码,也不需要装任何东西。本指南讲它们如何工作、能修哪些错,以及什么时候用。
什么是在线 JSON 修复器?
在线 JSON 修复器是一个跑在浏览器里的工具:接收不合法的 JSON 作为输入,应用一套修复启发式,输出合法的 JSON。优秀的修复器还会顺手格式化结果,让你看清结构。
跟只告诉你「有毛病」的简单校验器不同,修复器会告诉你「哪里有毛病」并把它改好。你拿到的是可用的输出,而不只是错误消息。
在线修复器最常修复的几类 JSON 错误
尾随逗号
JSON 里最常见的错误。对象或数组最后一项后的逗号在 JavaScript 里合法,但在 JSON 里是非法的。
// 无效
{ "name": "Alice", "score": 98, }
// 修好
{ "name": "Alice", "score": 98 }单引号
JSON 要求字符串与键都使用双引号。单引号字符串是 JavaScript 的习惯,许多开发者一不小心就带过来了。
// 无效
{ 'name': 'Alice' }
// 修好
{ "name": "Alice" }未加引号的键
JavaScript 对象字面值允许裸(未加引号的)键,JSON 不允许。
// 无效
{ name: "Alice", age: 30 }
// 修好
{ "name": "Alice", "age": 30 }JavaScript 注释
JSON 没有注释语法。从 JavaScript 源代码里复制过来的注释,或加到配置文件里的注释,都会让解析失败。
// 无效
{
"debug": true, // 启用日志
/* 上线前移除 */
"verbose": false
}
// 修好
{
"debug": true,
"verbose": false
}Python 字面值
Python 用 True、False 和 None 表示布尔与 null。JSON 要求小写的 true、false 和 null。
// 无效(Python 风格)
{ "active": True, "deleted": False, "nickname": None }
// 修好
{ "active": true, "deleted": false, "nickname": null }Markdown 代码围栏
当你让 LLM(ChatGPT、Claude、Gemini)输出 JSON 时,它常常把结果包在 Markdown 代码块里。反引号和语言标签不属于 JSON。
// 无效(带 Markdown 围栏)
```json
{ "name": "Alice", "age": 30 }
```
// 修好
{ "name": "Alice", "age": 30 }未闭合的括号或缺失的值
被截断的 JSON —— 来自被切断的 API 响应或不完整的复制粘贴 —— 会留下未闭合的对象或数组。修复器可以自动闭合它们,产出语法合法的输出。
// 无效(被截断)
{ "users": [{ "id": 1, "name": "Alice"
// 修好(自动闭合)
{ "users": [{ "id": 1, "name": "Alice" }] }文档开头的 UTF-8 BOM
某些 Windows 工具写出来的文件会以 UTF-8 BOM 开头(0xEF 0xBB 0xBF)。RFC 8259 禁止 JSON 开头出现 BOM,JSON.parse 会以 0 位置的错误拒绝它 —— 看起来 像首字符非法。修复阶段会剥掉它;如果你手动解析,请先做 text.replace(/^/, '')。
清理 AI 生成的 JSON(LLM 输出)
今天最稳定的「几乎是 JSON」的来源就是 LLM 响应。它们的模式一致到足以机械修复:
```json … ```围栏把负载包了起来- 数组与对象里的尾随逗号
- 训练数据里混进来的 Python 风格字面值(
True、None) - 模型被 token 限制截断时的括号不平衡
- 「美化」带来的智能引号(
“ ”)
剥掉围栏、跑修复、再校验。专门针对 LLM 输出的完整流程,请参见 修复 LLM JSON 输出 指南。
在线 JSON 修复是怎么工作的
简单的修复器用正则 —— 比如把 ,} 替换为 } 来去掉尾随逗号。这在简单场景下能用,但当同样的字符序列出现在字符串值里就会失败。
更好的修复器使用修复解析器:一个在遇到意外 token 时不直接抛错、而是尝试恢复并继续的 JSON 解析器。它逐字符地走输入,在上下文里应用启发式:
- 在该用双引号的地方看到单引号时,切换引号模式
- 在该有带引号键的地方看到裸词时,加上引号
- 在该是
true的地方看到True时,把它转为小写 - 在结构未闭合时到达输入末尾,就闭合所有打开的括号
因为修复理解文法,它只在结构位置上修改 —— 永远不会破坏字符串内容。
什么时候用在线 JSON 修复器
| 情境 | 用在线修复器? |
|---|---|
| 调试一次性的 API 响应 | ✅ 用 —— 最快得到可读输出 |
| 修复 LLM 生成的 JSON | ✅ 用 —— LLM 经常产生尾随逗号与 Markdown 围栏 |
| 快速修一份配置文件 | ✅ 用 —— 看到修复后再到编辑器里手动应用 |
| 生产数据管道 | ⚠️ 改用代码中的修复库(例如 json-repair) |
| 数据含 API 密钥或个人信息 | ⚠️ 用浏览器本地运行的工具 —— 见下文 |
隐私:JSON 会不会离开你的浏览器?
这是对任何在线 JSON 工具最需要问的问题。许多在线格式化器与修复器会把你的输入发到服务器 —— 数据可能被记录、被 CDN 缓存、被搜索引擎索引。
JSON Fix 完全运行在你的浏览器里。当你贴入 JSON 并点击 Repair 时,处理在你设备的 JavaScript 中发生 —— 什么都不会发往服务器。你可以打开浏览器的 Network 面板来核实:点击按钮时没有发起任何请求。
这意味着可以安全地处理敏感数据,例如包含 token 的 API 响应、带个人信息的数据库导出,或内部配置文件。完整解释见 为什么不要把敏感 JSON 贴到在线工具里。
常见问题
怎样在线修复 JSON?
把坏掉的 JSON 贴到一个浏览器修复器里,例如 JSON Fix。它会识别并修复尾随逗号、单引号、未加引号的键、Python 字面值、注释与 Markdown 围栏,然后美化输出合法的 JSON 让你复制回去 —— 不需要安装 也不需要注册。
把敏感 JSON 贴到在线修复器里安全吗?
只有当工具完全在你的浏览器里运行时才安全。许多在线格式化器会 POST 你的输入到服务器,那里可能会被记录或缓存。JSON Fix 在客户端完成全部处理 —— 打开 Network 面板可以确认没有发出请求。详情见为什么这很重要。
JSON 修复器和校验器有什么区别?
校验器只告诉你 JSON 无效以及位置;修复器还会修好它并返回合法的输出。更深入的对比见 JSON 格式化器 vs JSON 修复。
在线修复器能修 AI 生成的 JSON 吗?
能 —— LLM 输出经常带 Markdown 代码围栏和尾随逗号,修复器会自动剥掉。专项指南是 修复 LLM JSON 输出。
在线修复 JSON —— 立刻就能用
把你坏掉的 JSON 贴进 JSON Fix。它会:
- 识别错误类型
- 修复尾随逗号、单引号、未加引号的键、Python 字面值、注释与 Markdown 围栏
- 用一致的缩进美化输出结果
- 显示一份变更 diff,便于你审阅修复
- 100% 在你的浏览器里运行 —— 数据不发往任何地方
该套件中的其他工具:
- 如何在 JavaScript 中处理坏掉的 JSON —— 用 try/catch 与修复解析器把 JSON 修复加进你自己的代码
- 修复「[object Object]」和其他 JSON 语法错误 —— 每一种常见 JSON 错误的完整参考
- JSON 格式化器 vs JSON 修复 —— 何时校验、何时格式化、何时修复
- JSON Diff —— 比较两份 JSON 文档找差异
- YAML 转 JSON —— 把 YAML 转为合法 JSON
- Base64 解码器 —— 解码 Base64 编码的 JSON 负载(例如 JWT claims)