寫在前面的話
這個問題在以前作項目時碰到過一次,當時按照網上的作法,去掉JSON.parse()這一層轉換後就沒有這個報錯了,數據也能正常使用,就沒多想,也沒深究是什麼緣由。git
但是此次又碰到了,因此此次必需要弄明白緣由。github
先看看它的做用
JSON.parse()用於從一個字符串中解析出json對象,如json
var str = '{"name":"LeonWu","age":"18"}'數組
JSON.parse(str);學習
//結果爲一個Object
// age: "18";
// name: "LeonWu";
1
2
3
4
5
6
7
JSON.stringify()用於從一個對象解析出字符串,如.net
var a = {a:1,b:2,c:"LeonWu"};
JSON.stringify(a);
//結果爲 "{"a":1,"b":2,"c":"LeonWu"}"
1
2
3
4
5
6
背後的緣由
報錯的緣由
由於你要轉換的數據原本就是object,JSON.parse()這個方法是把一個字符串解析出json對象,你再轉換就會報錯;對象
爲何會有這樣的錯誤
由於把Object做爲參數傳到JSON.parse()裏時,首先會默利用toString()方法轉爲string,結果爲"[object Object]"。blog
JSON.parse()將第一個字符’['理解爲數組的開始,第二字符’o’不知道怎麼處理;因此就拋出了上面的錯誤信息 Unexpected token o in JSON at position 1。token
--------------------- 分割線,2019年1月22日11:21:03更新-----------------------資源
好多人在下面評論,問最終的解決方案,多是我沒有寫清楚的緣故吧。
解決方案我在文章開頭就說了,就是去掉JSON.parse()這一層轉換,由於你須要轉換的數據原本就是一個json對象了,不須要在轉換了。
github資源倉庫:bug集合js1–Unexpected token o in JSON at position 1
個人CSDN博客地址:https://blog.csdn.net/wxl1555
若是您對個人博客內容有疑惑或質疑的地方,請在下方評論區留言,或郵件給我,共同窗習進步。