页面传输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, '%'))
至此解决了两个不常见的传输解析的问题