关于JSON.parse()使用报 Unterminated string in JSON的问题

页面传输object格式的json对象,但是再跳转页面后不能解析,报错:SyntaxError: Unterminated string in JSON,看这个报错肯定是json字符串有问题,检查了json字符串格式,未发现问题,但是就是解析不了,
我仔细试了几个,发现有的能正常解析,有的不能正常解析,仔细对比了一遍推测字符串中各种 ‘\’ 、‘//’、\n、· ·等导致的,搜了很多,网上没有解决方案,相关问题也很少,或者有的莫名其妙解决了,放在我这里解决不了,最后上了stackoverflow定位是这个错误一般就是json数据格式不正确,我这个原因是因为传过来的json数据里有\和中文空格问题。

使用前对json对象处理一下即可,如果像我用的是路由拼接传值,则加密一下就可以混淆传输了,我是使用window.encodeURIComponent把json传过去的:

${window.encodeURIComponent(JSON.stringify(item))}

跳转后用decodeURIComponent解析就好了。

这里又有一个问题,就是偶尔会报错:

Uncaught URIError: URI malformed at decodeURIComponent ()

这是因为你的加密链接url中包含了 “%” 字符,浏览器在对“%”执行decodeURIComponent时报错,正确的解决是将%全部用正则替换为%25再进行传输,在正则表达式中,%25 实际上是一个URL编码的 % 字符。

regExp = /%/g, '%25'

直接使用即可

urlStr.replace(/%/g, '%25');
window.encodeURIComponent(JSON.stringify(item).replace(/%/g, '%25'))

至此解决了两个不常见的传输解析的问题

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kirinlau

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值