1. 程式人生 > >微信小程式大坑:encode後的JSON字串,JSON.parse解析失敗

微信小程式大坑: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 解碼。

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