JSON 在线解析 · 校验 · 修复

JSON 解析失败怎么办:常见错误、校验与修复方法

JSON 解析失败通常不是工具故障,而是输入内容不符合严格 JSON 语法。本指南从报错定位、常见错误、API 响应检查到修复后的二次验证,给出一套可以重复使用的排查流程。

约 8 分钟更新于 2026-07-20 示例不包含真实业务数据
  • 先确认输入确实是 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",
}
修正后的标准 JSON
{
  "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 是更严格的数据交换格式。