You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JSON.parse()解析responseText时出现Unexpected end of JSON input错误

解决JSON.parse()触发Uncaught SyntaxError的问题

这个问题的核心是你拿到的responseText格式不符合标准JSON规范——它被额外的一对双引号包裹住了,而且内部的双引号没有转义,导致JSON.parse()无法正确解析。

问题分析

你提供的responseText是:

"{"session_id": "AAAAAAABvgm8szOYtCcbQg"}"

从表面看,这像是一个字符串包裹着JSON对象,但按照JSON规则,字符串内部的双引号必须用反斜杠转义(比如"{\"session_id\": \"AAAAAAABvgm8szOYtCcbQg\"}"),否则JSON.parse()读到第一个内部双引号时,会误以为字符串已经结束,剩下的内容就会触发Unexpected end of JSON input错误。而在线解析器通常会做容错处理,自动忽略外层多余的引号,所以能正常解析。

解决方案

最简单的处理方式是先移除responseText首尾的双引号,再进行解析:

// 先去除两端空白,再截取掉首尾的双引号
const cleanedResponse = responseText.trim().slice(1, -1);
const parsedData = JSON.parse(cleanedResponse);

如果担心首尾可能存在其他非引号的空白或字符,也可以用正则表达式精准匹配并移除外层的双引号:

const cleanedResponse = responseText.replace(/^"|"$/g, '');
const parsedData = JSON.parse(cleanedResponse);

额外建议

如果这个响应是你自己服务端返回的,最好直接修改服务端代码,返回标准的JSON格式(也就是去掉外层的双引号,直接返回{"session_id": "AAAAAAABvgm8szOYtCcbQg"}),这样前端就不需要额外处理,更符合规范。

内容的提问来源于stack exchange,提问作者Alex Knopp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 09:47:49