先记住这三点
- 先确认输入确实是 JSON,而不是 HTML、JSONP、日志片段或被截断的响应。
- 尾逗号、单引号、未加引号的键名和错误转义,是最常见的解析失败原因。
- 自动修复适合恢复常见非标准写法,但修复后仍应核对字段和值是否符合业务预期。
JSON 在线解析实际在检查什么
JSON 在线解析会先把文本转换为对象、数组、字符串、数字、布尔值或 null。解析器不仅检查括号是否成对,还会检查键名引号、字符串转义、逗号位置和数字格式。任何一个字符不符合语法,都可能导致整段内容无法解析。
严格 JSON 与 JavaScript 对象字面量并不相同。JavaScript 允许单引号、注释、未加引号的部分键名和尾逗号,但标准 JSON 不允许这些写法。把控制台里的对象直接复制到接口配置中,是常见的错误来源。
| 检查项 | 合法 JSON | 常见错误 |
|---|---|---|
| 对象键名 | 必须使用双引号 | name: "Tool Tics" |
| 字符串 | 必须使用双引号并正确转义 | 'hello' 或包含未转义换行 |
| 逗号 | 只能分隔相邻成员 | 最后一个字段后仍保留逗号 |
| 数字 | 不能包含 NaN、Infinity 或前导加号 | value: NaN |
| 注释 | 标准 JSON 不支持注释 | // comment |
五类最常见的 JSON 格式错误
错误信息中的位置通常指向解析器“发现问题”的地方,不一定是问题真正开始的位置。例如缺少一个双引号,解析器可能直到下一行遇到逗号时才报错。因此排查时要同时查看报错字符前后的字段。
- 尾逗号:对象或数组最后一项后多了逗号。
- 单引号:字符串或键名使用了 JavaScript 风格的单引号。
- 键名未加双引号:例如 {name: "Alice"}。
- 转义错误:路径中的反斜杠、字符串中的双引号或换行没有正确转义。
- 括号缺失:复制日志或接口响应时,开头、结尾被截断。
{
user: 'Alice',
"roles": ["admin", "editor",],
"path": "C:\Users\Alice",
}{
"user": "Alice",
"roles": ["admin", "editor"],
"path": "C:\\Users\\Alice"
}推荐的校验与修复流程
处理生产接口、配置文件或包含业务数据的 JSON 时,不要直接覆盖原文。先保留原始内容,再使用格式化工具定位错误;如果需要自动修复,应比较修复前后的字段数量、数组长度和关键值。
修复成功只代表内容恢复为可解析的 JSON,不代表业务数据一定正确。例如被截断的数组可以补上右括号,但缺失的数组成员无法自动恢复。
- 保存原始文本,避免修复失败后无法回退。
- 先执行校验并记录首个错误位置。
- 检查错误位置前后的引号、逗号、括号和转义字符。
- 必要时执行自动修复,再重新格式化和校验。
- 核对 ID、金额、时间、数组长度等关键业务字段。
API 返回的内容为什么看起来像 JSON 却无法解析
接口调试时,响应体无法解析不一定是 JSON 语法本身的问题。服务端可能返回了登录页、网关错误页或代理生成的 HTML;也可能返回带前缀的 JSONP、服务端日志与 JSON 混合内容,或者因为网络中断只收到部分响应。
应同时检查 HTTP 状态码和 Content-Type。正常 JSON API 通常返回 application/json;如果收到 text/html,应先解决鉴权、路由或网关问题,而不是继续修改 JSON。
- 检查响应是否以 <html、<!DOCTYPE 或错误堆栈开头。
- 确认 HTTP 状态码不是 301、401、403、404、502 等异常状态。
- 检查 Content-Type 是否为 application/json。
- 确认响应体没有 callback(...) 包装或日志前缀。
- 确认复制内容没有遗漏开头、结尾或超长响应的中间部分。
边看边操作
使用在线 JSON 校验与修复工具
在浏览器本地定位语法错误、尝试修复,并用树形视图检查修复结果。
FAQ
常见问题
Unexpected token 通常是什么意思?
表示解析器在当前位置遇到了不符合 JSON 语法的字符。常见原因包括单引号、未加引号的键名、尾逗号、HTML 响应和错误转义。应同时检查报错位置前后的内容。
自动修复会不会改变原始数据?
自动修复会调整引号、逗号、括号等语法结构,可能在输入严重损坏时产生与原意不同的结果。因此修复后应重新校验,并核对关键字段。
为什么 JavaScript 对象能运行,复制成 JSON 却报错?
JavaScript 对象字面量允许更多语法,例如单引号、注释、尾逗号和部分未加引号的键名;JSON 是更严格的数据交换格式。