1. 程式人生 > >Unexpected token o in JSON at position 1 at JSON.parse (<anonymous>)

Unexpected token o in JSON at position 1 at JSON.parse (<anonymous>)

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

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

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

JSON.parse(str);

//結果為一個Object
// age: "18";
// name: "LeonWu";
1
2
3
4
5
6
7
JSON.stringify()用於從一個物件解析出字串,如

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物件,你再轉換就會報錯;

為什麼會有這樣的錯誤:
因為把Object作為引數傳到JSON.parse()裡時,它會默把Object轉為string,
就會先呼叫原型上的toString()方法;結果為”[object Object]”,JSON.parse將第一個字元’[‘理解為陣列的開始,第二字元’o’不知道怎麼處理;所以就丟擲了上面的錯誤資訊 Unexpected token o in JSON at position 1。


---------------------
作者:LeonWuV
來源:CSDN
原文:https://blog.csdn.net/wxl1555/article/details/79184076
版權宣告:本文為博主原創文章,轉載請附上博文連結!