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

一: JSON數據的兩種解析方法 JSON.parse() 、eval ()方法
1 :JSON.parse() : 用於將一個 JSON 字符串轉換爲 JavaScript 對象。
var str =  '{"name":"zhangsan","age":18,"gender":"man"}';

 JSON.parse(str);複製代碼

​ 結果: javascript

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

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

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

​ 結果:jquery

爲何eval()解析的時候要加括號?
那是由於eval()至關於一個執行環境,當你不加括號的時候,str 會被認爲是一條複合語句。運行的時候就會逐個字符的解析。
可是加上括號的時候,str 就當作一個表達式去運算。從括號開始就被當作了對象進行識別。複製代碼

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

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);複製代碼

結果爲:
bash

三:jQuery.parseJSON() 將格式無缺的JSON字符串轉爲與之對應的JavaScript對象
var str =  '{"name":"zhangsan","age":18,"gender":"man"}';

jQuery.parseJSON(str)複製代碼

結果:ui

若是這篇文章對您有幫助的話,請多多支持!spa

相關文章
相關標籤/搜索