微信小程式大坑:encode後的JSON字串,JSON.parse解析失敗
阿新 • • 發佈:2019-02-19
今天,遇到微信 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 解碼。
微信坑多,且踩且珍惜