JSON 常见错误 10 种:Unexpected token 等报错原因与修复方法
JSON 报错几乎都来自同一个根因:不是合法 JSON 文本。下面是 10 种最高频的错误,附示例和修复方法。遇到 `Unexpected token` 时,先看报错位置,再对照本清单逐项排查。
10 种高频错误对照表
| # | 错误特征 | 典型报错 | 修复 |
|---|---|---|---|
| 1 | 末尾多余逗号 | Unexpected token } | 删除最后一个键值对后的逗号 |
| 2 | 键或字符串用了单引号 | Unexpected token ' | 全部改为双引号 |
| 3 | 混入注释 | Unexpected token / | 删除 // 或 /* */(JSON 不支持注释) |
| 4 | 文件开头有 BOM 或空白 | Unexpected token | 以 UTF-8 无 BOM 保存 |
| 5 | 字符串内非法转义 | Bad escaped character | 只使用 \ " / b f n r t uXXXX |
| 6 | 控制字符未转义(换行在字符串里) | Unexpected token | 换行写成 \n |
| 7 | 值类型错误(NaN/Infinity/undefined) | Unexpected token N | JSON 只允许字符串/数字/布尔/null/数组/对象 |
| 8 | 数字格式非法(前导零、.5) | Unexpected number | 写成 0.5 |
| 9 | 缺逗号或多逗号 | Unexpected string | 键值对之间恰好一个逗号 |
| 10 | 括号/引号不配对 | Unexpected end of input | 用带行列提示的校验工具定位 |
错误示例与修复
// ❌ 错误:单引号 + 末尾逗号 + 注释
{'name': 'tom', 'age': 30,} // 用户信息
// ✅ 正确
{"name": "tom", "age": 30}
实用排查顺序
- 先看报错行列号指向的位置,90% 的错误就在附近
- 检查引号:JSON 只认双引号
- 检查逗号:最后一个元素后不能有逗号
- 检查注释与单引号(很多人把 JS 对象写法直接当 JSON 用)
- 用在线校验工具复验
💡 用 JSON 格式化工具 的「校验」功能,会自动定位到错误行列并高亮原因;「压缩」可一键去除多余空格;日志多段解析可直接处理拼接日志。