encode後的JSON字符串,JSON.parse解析失敗

轉自:閃電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 解碼。

微信坑多,且踩且珍惜微笑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章