页面传输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'))

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐