toolgarden.xyz
EN

JSON 修复清洗

自动修复 JSONC / JSON5 中的注释、尾逗号、单引号、未加引号 key 等常见问题,还原成标准 JSON,浏览器本地处理。

待修复 JSON

修复结果

修复后的标准 JSON 将显示在这里

工具说明

「JSON 解析失败」有两种完全不同的原因:一种是文本确实坏了(引号没配对、括号缺一半),另一种是文本本身是合法的,只不过用的是标准 JSON 之外的写法:注释、尾逗号、单引号、未加引号的 key。后者在配置文件里极其常见,而严格的解析器会一视同仁地拒绝。这个工具处理的正是第二类。

还有一类高频问题来自复制粘贴:从日志、数据库字段或另一段 JSON 的字符串值里取出来的内容,往往整体被转义过一层,每个双引号前都多了反斜杠。这种文本肉眼看着像 JSON,实际是一个 JSON 字符串的字面量,需要先反转义再解析。

使用步骤

  1. 把无法解析的文本整段粘进来

    不需要先手动清理。注释、尾逗号、单引号、未加引号的 key、多余的转义反斜杠可以同时存在,一次处理完。

  2. 查看修复结果与改动

    输出是符合 RFC 8259 的标准 JSON。对照左右两侧可以确认工具改了什么:修复只调整语法,不会增删字段或改变值。

  3. 仍然失败时看错误位置

    如果文本是真的损坏(括号数量不匹配、字符串没有结束引号),修复无法凭猜测补全,此时会给出出错位置,需要你回到数据来源确认。

  4. 把标准 JSON 交给下一步

    修好之后可以直接用 JSON 格式化查看树形结构、用 JSONPath 查询取字段,或转成 YAML、CSV、TypeScript 类型。

输入与输出示例

一个典型的 JSONC 配置片段:带注释、单引号 key、尾逗号,标准解析器会直接拒绝。

无法被标准解析器接受
{
  // 服务端口,改这里要同步改 nginx
  'host': "127.0.0.1",
  port: 8080,
  tags: ['api', 'internal',],
}
修复为标准 JSON
{
  "host": "127.0.0.1",
  "port": 8080,
  "tags": [
    "api",
    "internal"
  ]
}

支持范围与限制

注释
识别并移除 `//` 行注释与 `/* */` 块注释
尾逗号
移除对象和数组最后一个成员之后的多余逗号
引号
单引号字符串转为双引号,未加引号的 key 补上双引号
多余转义
识别整体被转义过一层的文本,反转义后再解析
无法修复的情况
括号 / 引号数量不匹配、内容被截断:这类需要回到数据源,不做猜测性补全
处理位置
全部在浏览器内完成,粘贴的内容不发送到服务器

典型使用场景

  • 把编辑器配置放进只认标准 JSON 的地方

    tsconfig.json、.eslintrc.json、VS Code 的 settings.json 都是 JSONC。要把它们交给一个严格解析器(或写进环境变量)之前,得先把注释和尾逗号去掉。

  • 还原从日志里复制出来的响应

    日志常把整个响应体当字符串打印,于是每个双引号都带上了反斜杠。反转义之后才能得到真正可解析的 JSON。

  • 接手来源不明的数据文件

    别人给的 .json 文件可能是手写的,混着单引号和尾逗号。先修复再校验,比逐行手改快得多,也不容易在改的过程中弄错值。

使用前需要知道的事

  • 修复只改语法,不改语义。它不会补上缺失的字段、不会猜测被截断的内容、也不会纠正明显不合理的值:那些需要你自己判断。
  • 注释在输出中会消失,因为标准 JSON 没有注释语法。如果那些注释对维护配置文件很重要,请保留原始的 JSONC 文件,只把修复结果用于需要标准 JSON 的场景。
  • 重复 key 会按「后者覆盖前者」处理,这是 JSON 解析的通行做法。如果原文本里同一个 key 出现了两次,修复后只会剩下一个,这一点在对照输出时值得留意。
  • 数字仍然按 JavaScript number 解析。JSON5 的十六进制写法会被转成十进制,超长整数会丢精度:需要原样保留时应当用字符串承载。

相关概念

RFC 8259
JSON 的现行标准。它不允许注释、尾逗号、单引号字符串和未加引号的 key,这就是「合法的配置文件」被标准解析器拒绝的原因。
尾逗号 (trailing comma)
数组或对象最后一个成员后面的逗号。JavaScript 和 JSON5 允许,标准 JSON 不允许,它是 JSON 解析失败最常见的单一原因。
双重转义
一段 JSON 作为字符串值被嵌进另一段 JSON 时产生的结果,表现为每个双引号前都有反斜杠。需要先反转义一层才能得到原始 JSON。

常见问题

可以修复哪些常见的 JSON 错误?
支持去除注释和尾逗号、把单引号和未加引号的 key 转成标准双引号,并把 JSONC / JSON5 还原成合法 JSON。
能清洗大模型(AI)返回的 JSON 吗?
可以。AI 输出常见的尾逗号、注释、单引号等问题都能自动修复为合法 JSON,方便直接解析。
修复过程安全吗?
修复完全在浏览器本地进行,数据不会上传,适合处理包含密钥或个人信息的配置文件。
修复会改动我的数据吗?
不会。工具只调整语法层面的写法:引号、逗号、注释、转义。字段名和值原样保留,唯一的例外是重复 key 会按 JSON 惯例只保留后出现的那一个。
为什么有些文本修不了?
因为缺失的信息无法凭推断补回来。括号数量不匹配、字符串没有结束引号、内容在中途被截断,都意味着原文本已经丢了字符。工具不做猜测性补全,因为猜错比报错更危险。
和 JSON 格式化有什么区别?
格式化假设输入是能解析的,负责重新排版;修复处理的是根本解析不了的输入。实践中的顺序通常是先修复、再格式化,格式化工具本身也接受 JSONC 和 JSON5。