JSON.parse()、eval()、JSON.stringify()、jQuery.parseJSON()的用法

愛情海的風景發表於2017-09-16
一: JSON資料的兩種解析方法 JSON.parse() 、eval ()方法
1 :JSON.parse() : 用於將一個 JSON 字串轉換為 JavaScript 物件。
var str =  '{"name":"zhangsan","age":18,"gender":"man"}';

 JSON.parse(str);複製程式碼

​ 結果:

注意:單引號寫在{}外,每個屬性名都必須用雙引號,否則會丟擲異常。(有的瀏覽器不支援 JSON.parse() 如:IE 6 、IE 7 就不支援)

2:eval(): 也是用於將一個 JSON 字串轉換為 JavaScript 物件
var str =  '{"name":"zhangsan","age":18,"gender":"man"}';

eval('('+str+')');  // 格式: eval( '(' + string + ')' );複製程式碼

​ 結果:

為什麼eval()解析的時候要加括號?
那是因為eval()相當於一個執行環境,當你不加括號的時候,str 會被認為是一條複合語句。執行的時候就會逐個字元的解析。
但是加上括號的時候,str 就當做一個表示式去運算。從括號開始就被當做了物件進行識別。複製程式碼

JSON.parse() 和 eval()的區別

var num = 1;
var jsonstr = '{"name":"zhangsan","age":++num}';
var jsondata1 = eval('('+jsonstr+')');

console.log(jsondata1);

console.log(num);//這時num值為2

var jasondata2=JSON.parse(jsonstr);
console.log(jsondata2);//報錯複製程式碼

結果:

從上例就可以明顯地看出, eval在解析字串時,會執行該字串中的程式碼。
由於用eval解析一個json字串而造成原先的num的值改變(這樣的後果是相當危險的)。複製程式碼
二:JSON.stringify() :用於將 JavaScript 值轉換為 JSON 字串
var str =  {"name":"zhangsan","age":18,"gender":"man"};

JSON.stringify(str);複製程式碼

結果為:

三:jQuery.parseJSON() 將格式完好的JSON字串轉為與之對應的JavaScript物件
var str =  '{"name":"zhangsan","age":18,"gender":"man"}';

jQuery.parseJSON(str)複製程式碼

結果:

如果這篇文章對您有幫助的話,請多多支援!

相關文章