在线修复 JSON
在本地修复无效的 JSON,再以清晰的缩进格式化。日志、API 和大模型输出里的常见错误都能处理。
先修语法,再谈格式化
格式化工具没法美化它压根解析不了的文本。这个工具做的是前面那道更脏的活:解析常见的"近似 JSON"语法,在意图明确的地方把它转成严格 JSON,然后把输出排版好供你复核。
所以它很适合处理从源码里拷出来的 JavaScript 对象字面量、日志里的 Python 风格字典、手工改过的配置文件,或者被 Markdown 围栏包起来的 AI 回复。普通格式化器遇到第一个单引号或尾随逗号就停了,而 Repair & Format 的目标是把整份文档都归一化。
修复流程认得哪些错误
- 单引号字符串,比如
'Ada'; - 没加引号的对象键,比如
{ name: "Ada" }; }或]前面的尾随逗号;- 从 Python 拷来的
True、False、None; - JavaScript 的行注释和块注释;
- 包住 JSON 回复的 Markdown 代码围栏;
- 十六进制数字,比如
0xFF。
修复是刻意宽容的,JSON 校验器则是刻意严格的。两个配合着用。
一套靠谱的修复流程
- 去掉凭据,把输入裁到仍然能复现问题的最小样本。
- 点 Repair & Format,把输出和输入对照着看。
- 逐一检查工具做了"理解性改动"的地方,尤其是字符串、数字和
null。 - 对修复后的文本跑一遍严格校验器。
- 发到任何重要的地方之前,先拿应用的 schema 或 API 约定验证结果。
看看这段坏掉的输入:
{
user: 'Ada',
active: True,
roles: ['admin',],
}
语法已经强烈暗示这是一个有三个字段的对象,所以修复风险很低:给键名和字符串加双引号、把 Python 的布尔值转过来、删掉末尾的逗号。但缺值就是另一回事了 —— 面对 { "limit": },没有任何通用工具能知道作者想写的是 0、null、空字符串,还是别的什么。
语法修复不等于数据校验
就算是合法 JSON,对消费它的系统来说也可能是无效的。用户 ID 也许必须保持字符串,才能留住前导零。日期可能文本合法,时区却错了。逗号全都放对了,但多出来的一个属性,可能就改变了鉴权行为。
解析器接受这份文档之后,还要检查必填字段、类型、允许的取值、数组长度、null 的处理和未知的键。涉及权限、计费、删除等高影响操作时,请把修复后的载荷和一份已知正确的样本或正式 schema 对比。
本地处理,但该防的还得防
编辑器和修复引擎都在你的浏览器里运行,粘贴的文档不需要上传到 fixjson.org 的应用服务器才能处理。页面托管和分析统计与编辑器流程是分开的,详见隐私政策。
本地处理确实降低了暴露面,但把调试样本脱敏依然是好的工程习惯。不要把机密、令牌、客户数据或生产环境标识粘贴到任何网站上。