1. 程式人生 > >小程式json.parse錯誤

小程式json.parse錯誤

錯誤詳情

今天檢視上線的微信小程式後臺,發現了一個這樣的錯誤:

Unexpected token in JSON at position 52;
at pages/send/send onShow function;
at api request success callback function   

於是我開啟除錯工具檢視原始碼並且除錯:

VM792:1 thirdScriptError
Unexpected token 
in JSON at position 52;at pages/send/send onShow function;
at api request success 	callback function
SyntaxError: Unexpected token 
in JSON at position 52
at JSON.parse (<anonymous>)
at success (http://127.0.0.1:60162/appservice/pages/send/send.js:130:35)
at http://127.0.0.1:60162/appservice/utils/bmob.js:2293:37
at wrappedResolvedCallback (http://127.0.0.1:60162/appservice/utils/bmob.js:2219:48)
at http://127.0.0.1:60162/appservice/utils/bmob.js:2171:34
at Object._.each._.forEach [as _arrayEach] (http://127.0.0.1:60162/appservice/utils/underscore.js:161:17)
at Bmob.Promise.resolve (http://127.0.0.1:60162/appservice/utils/bmob.js:2170:18)
at wrappedResolvedCallback (http://127.0.0.1:60162/appservice/utils/bmob.js:2228:37)
at http://127.0.0.1:60162/appservice/utils/bmob.js:2171:34
at Object._.each._.forEach [as _arrayEach] (http://127.0.0.1:60162/appservice/utils/underscore.js:161:17)   

果不其然,小程式已然上線,這個錯誤一定不能忍

除錯過程

通過錯誤資訊定位到出錯的程式碼

通過上面的報錯資訊:
at success (http://127.0.0.1:60162/appservice/pages/send/send.js:130:35)
定位到出錯的程式碼是在130行:
var jsonB = JSON.parse(jsonA);

上網瀏覽查詢相關資料

網上的說法不一而足,實在不知道該聽信哪家之言
不過都集中在json檔案不能有註釋json字串url有誤json字串有特殊字元

定位原因

排除了幾種錯誤後還沒有解決問題,有點心灰意冷,
嘗試著輸出json字串中的每一個字元

51 "。"
52 "
"
53 "2"

等等,換行符確是是個特殊字元(ps,在js裡面\r是回車符,\n是換行符,)
(在小程式中,我這個jsonA是包含使用者的鍵盤輸入資訊的)

解決辦法

jsonA = jsonA.replace('\n','')

後話

小程式的預覽可以檢視: 點選檢視
小程式的所有原始碼: github地址