首页 前端知识 关于JSON.parse()使用报 Unterminated string in JSON的问题

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

2025-02-27 11:02:29 前端知识 前端哥 622 223 我要收藏

页面传输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时报错,正确的解决是将%全部用正则替换为%再进行传输,在正则表达式中,% 实际上是一个URL编码的 % 字符。

regExp = /%/g, '%'

直接使用即可

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

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

转载请注明出处或者链接地址:https://www.qianduange.cn//article/21664.html
标签
评论
发布的文章

Opencv [去除水印]

2025-02-27 11:02:42

0基础学前端-----CSS DAY13

2025-02-27 11:02:41

蓝桥杯之日期题

2025-02-27 11:02:39

模拟算法.

2025-02-27 11:02:39

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!