执行JSON.parse报错Unexpected token ' in JSON at position 0求助
问题根因
你混淆了JavaScript字符串字面量的包裹符号与JSON本身的语法规则:
- 你参考的文档里
'{ "name":"John", "age":30, "city":"New York"}'属于JS代码层面的写法:外层单引号是JS用来标记字符串边界的语法,真正传入JSON.parse的字符串内容是去掉外层单引号的{ "name":"John", "age":30, "city":"New York"}。JSON本身的规范不允许内容首尾出现多余单引号,也不支持用单引号作为键值的包裹符号。 - 你当前的
str变量实际内容首尾自带单引号,等于传入JSON.parse的内容第一个字符就是单引号,不符合JSON语法要求,因此触发位置0的语法错误。 - 你之前尝试移除
"1"前的空格没有解决问题,是因为空格并非本次报错的诱因,问题核心是首尾多余的单引号。
排查验证方法
执行以下代码即可确认问题:
// 打印字符串第一个字符,输出为单引号'即可确认问题 console.log(str.charAt(0));
修复方案
可根据实际场景二选一:
- 方案1:从赋值源头修正,确保给
str赋值时,不要把JS层面包裹JSON的单引号也存入字符串内容中。 - 方案2:如果无法修改赋值逻辑,可先剔除首尾多余单引号再解析:
const parsedData = JSON.parse(str.replace(/^'|'$/g, ''));
内容的提问来源于stack exchange,提问作者APysnack
相关产品推荐
相关产品推荐

