寫在前面的話
這個問題在之前做項目時碰到過一次,當時按照網上的做法,去掉JSON.parse()這一層轉換後就沒有這個報錯了,數據也能正常使用,就沒多想,也沒深究是什麼原因。
可是這次又碰到了,所以這次必須要弄明白原因。
JSON更多知識:https://blog.csdn.net/muzidigbig/article/details/83305325
報錯的原因
因爲你要轉換的數據本來就是object,JSON.parse()這個方法是把一個字符串解析出json對象,你再轉換就會報錯;
爲什麼會有這樣的錯誤?
因爲把Object作爲參數傳到JSON.parse()裏時,首先會默利用toString()方法轉爲string,結果爲"[object Object]"。
JSON.parse()將第一個字符’['理解爲數組的開始,第二字符’o’不知道怎麼處理;所以就拋出了上面的錯誤信息 Unexpected token o in JSON at position 1。
在使用JSON.parse的時候,返回來的數據一定是嚴格的json格式,key值一定要用 雙引號 包起來,否則瀏覽器就會拋出異常。
另外,對於不標準的json字符串,使用eval()雖然可以正常解析,但是從安全的角度來講,一定要謹慎使用eval方法。規範json格式。