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

含单引号的字符串转JSON对象报错,求正确转换方法

解决JSON.parse解析单引号字符串报错的问题

你遇到的这个报错,核心原因是JSON语法有严格的格式要求:所有的键名和字符串值必须用双引号包裹,而你提供的原始字符串用的是单引号,这就导致JSON.parse无法正确解析。

这里给你两种可行的解决方法:

方法一:替换单引号为双引号(最直接)

直接把字符串里所有的单引号替换成双引号,让它符合JSON规范,修改后的代码如下:

const text = "[{'techid':'0128','daPoints':3,'speedingPoints':3,'fleetInspectionPoints':3,'lofPoints':3,'missedTrgModules':null,'fullName':'MANPREET SINGH','safetyInspectPoints':3,'missedTrgPoints':3,'speeding_qty':null,'safetyTotalPoints':21,'atFaultPoints':3,'atFaultAccident':null,'region':'PYEM','supervisor':'AGHATOR OSA','driverAlert':null,'status':'A'}]";
// 全局替换单引号为双引号
const validJsonText = text.replace(/'/g, '"');
const myArr = JSON.parse(validJsonText);
// 注意:直接输出对象会显示[object Object],转成格式化字符串更易读
document.getElementById("demo").innerHTML = JSON.stringify(myArr[0], null, 2);

方法二:从源头获取标准JSON(更稳妥)

如果条件允许的话,尽量让提供给你的数据是标准JSON格式(双引号包裹),这样就不需要手动处理字符串,避免后续可能出现的格式问题。

补充说明:你之前的代码里直接把myArr[0]赋值给innerHTML,浏览器会把对象转换成[object Object]显示,所以我改成用JSON.stringify格式化输出,这样能看到清晰的对象结构。

内容的提问来源于stack exchange,提问作者Er KK Chopra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:15:48