JSON.parse解析含转义单引号字符串报错,该如何解决?
问题根源
你额外加的全局转义逻辑破坏了JSON的标准格式:JSON规范中仅要求转义双引号、反斜杠、控制字符(换行、制表符等),单引号不需要转义。你通过replace(/[\/\(\)\']/g, "\\$&")给所有单引号前增加了反斜杠,生成的OG\'S RIDES属于JSON非法转义序列,直接触发解析报错。
解决方案1:仅做JS字符串字面量转义(推荐,性能更高)
发送端处理
只针对要嵌入单引号字符串的内容转义单引号,不修改JSON本身的合法结构:
// 生成标准JSON const jsonOrders = JSON.stringify(orders); // 仅转义单引号,避免提前闭合evalScript里的参数单引号 const escapedForEval = jsonOrders.replace(/'/g, "\\'"); // 传递参数 csiRun.evalScript(`setupSwitchBlade('${escapedForEval}', '${layoutFile}', '${orderDate}', '${productTag}', 1)`);
接收端处理
直接解析即可,不需要额外操作:
var orderParsed = JSON.parse(orders);
解决方案2:编码兜底(兼容特殊字符更多的场景)
如果你的数据里还包含换行、反斜杠等其他容易触发转义冲突的字符,可以用编码解码的方式彻底规避冲突:
发送端处理
const jsonOrders = JSON.stringify(orders); // 全局编码所有特殊字符 const encodedOrders = encodeURIComponent(jsonOrders); csiRun.evalScript(`setupSwitchBlade('${encodedOrders}', '${layoutFile}', '${orderDate}', '${productTag}', 1)`);
接收端处理
先解码再解析:
var orderParsed = JSON.parse(decodeURIComponent(orders));
内容的提问来源于stack exchange,提问作者FabricioG
相关产品推荐
相关产品推荐

