首页 / 教程文章 / JSON.parse 报错排查指南:Unexpected token 都是哪里出的问题

JSON.parse 报错排查指南:Unexpected token 都是哪里出的问题

发布于 2026-08-24 16:00:00 · 0 阅读 · 标签:JSON,JSON.parse,报错,前端排障

单引号、尾逗号、注释、BOM、返回 HTML 错误页是 JSON 解析报错的五大元凶。逐个击破,附在线校验工具用法。

一、先看懂报错

Unexpected token ' in position 1 这类报错的含义是:解析器在某个位置遇到了语法上不该出现的字符。position 从 0 计数,先定位到那个位置看字符是什么,基本就能锁定原因。

二、五大高频元凶

  1. 单引号:JSON 标准只认双引号,{'a':1} 直接报错。
  2. 尾逗号[1,2,] 最后一项后的逗号非法。
  3. 注释// 注释/* */ 都不允许。
  4. BOM 头:文件开头 EF BB BF,position 0 报错多半是它。
  5. 返回的不是 JSON:接口 500 返回 HTML 错误页,第一字符 < 就炸——先看响应体再谈解析。

三、隐蔽型问题

四、排查流程

  1. 把响应原文打出来:console.log(typeof data, data?.slice?.(0, 100)),先确认拿到的是字符串、开头是什么。
  2. 贴到在线 JSON 校验工具格式化,报错行号一目了然。
  3. 确认 HTTP 状态码与 Content-Type,别把错误页当 JSON 解析。
  4. 生成端修根因,而不是解析端 try-catch 吞异常。

在线体验

不用装任何环境,直接用本站JSON 格式化校验工具在线操作,数据都在浏览器本地处理,方便又安全。

常见问题

为什么 JSON 不支持注释?

设计取舍:JSON 定位是机器交换格式,注释属人类可读性需求,加进来增加歧义(注释边界)。需要注释用 JSON5/JSONC,或约定 _comment 字段。

接口明明返回 JSON 还是报错?

九成是响应前被塞了东西:PHP 的警告输出、BOM 头、Nginx 错误页、调试工具注入的代码。看响应原文第一个字符,是 < 就查后端报错,是空白就查 BOM。

2^53 之外的数字为什么要用字符串?

JS Number 是 64 位浮点,安全整数上限 2^53-1,超出后部分整数无法精确表示(末位归零)。ID 传字符串是跨语言最稳做法,Java/Python 端再按需转换。

更多文章