bug集合js1–Unexpected token o in JSON at position 1

LeonWuV發表於2019-02-16

歡迎訪問我的個人部落格:http://www.xiaolongwu.cn

寫在前面的話

這個問題在之前做專案時碰到過一次,當時按照網上的做法,去掉JSON.parse()這一層轉換後就沒有這個報錯了,資料也能正常使用,就沒多想,也沒深究是什麼原因。

可是這次又碰到了,所以這次必須要弄明白原因。

先看看它的作用

JSON.parse()用於從一個字串中解析出json物件,如

var str = `{"name":"LeonWu","age":"18"}`

JSON.parse(str);

//結果為一個Object
// age: "18";
// name: "LeonWu";

JSON.stringify()用於從一個物件解析出字串,如

var a = {a:1,b:2,c:"LeonWu"};
 
 JSON.stringify(a);
 
 //結果為 "{"a":1,"b":2,"c":"LeonWu"}"
 

背後的原因

報錯的原因

因為你要轉換的資料本來就是object,JSON.parse()這個方法是把一個字串解析出json物件,你再轉換就會報錯;

為什麼會有這樣的錯誤

因為把Object作為引數傳到JSON.parse()裡時,首先會默利用toString()方法轉為string,結果為”[object Object]”。

JSON.parse()將第一個字元`[`理解為陣列的開始,第二字元`o`不知道怎麼處理;所以就丟擲了上面的錯誤資訊 Unexpected token o in JSON at position 1。

——————— 分割線,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

如果您對我的部落格內容有疑惑或質疑的地方,請在下方評論區留言,或郵件給我,共同學習進步。

郵箱:wuxiaolong802@163.com

相關文章