轉自:閃電Jlaix的微信小程序大坑:encode後的JSON字符串,JSON.parse解析失敗
今天,遇到微信 JSON 解析的一個大坑。
網上找了好久,沒有人記錄過相同坑,所以寫下來吧。
跨頁面跳轉,想傳遞一個對象。於是先將對象,用 infoStr=JSON.stringify(object)轉爲了字符串。
由於對象中包含 url 屬性,JSON.parse 方法無法解析包含“?“、”&”之類的字符,所以先使用了 encodeURIComponent 對整個對象的字符串 infoStr 編碼。
字符串傳遞到目的頁後,使用 newObject=JSON.parse(options.infoStr) 轉回了對象。
關鍵的地方來了!!!
在模擬器上,JSON.parse 可以將編碼的字符串也順帶解碼,也就是說,獲得的newObject就是傳遞前的對象。
但是!在真機上,JSON.parse無法識別編碼後的字符串,會導致解析失敗!!
最後,我只能在傳遞前,先將對象中的 url 單獨 encode:
object.url=encodeURIComponent(object.url),
再通過infoStr=JSON.stringify(object) ,將對象轉爲字符串。
傳遞到目的頁後,再使用
newObject=JSON.parse(options.infoStr) ,還原爲對象。
最後,使用
newObject.url=decodeURIComponent(newObject.url),將對象中的 url 解碼。
微信坑多,且踩且珍惜