「JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它是基於ECMAScript的子集。因為採用獨立於語言的文字格式,也使用了類似於C語言家族的習慣,擁有了這些特性使JSON成為理想的資料交換語言,作用是易於人閱讀和編寫,同時也易於機器解析和生成(一般用於提升網絡傳輸速率)。
今天在這裡筆者想簡單談談jquery裡面的JSON.parse()和JSON.stringify()函數,順便還會提一下原生JS裡面的eval()函數
(1)JSON.parse 函數
作用:將 JavaScript 物件表示法 (JSON) 字串轉換為物件。語法:JSON.parse(text [, reviver])
參數:
text 必需。 一個有效的 JSON 字串。
傳回值:一個物件或陣列
var json = '{"name":"GDT","age":,"University":"GDUT"}'; var info = JSON.parse(json); //解析为JSON对象 document.write(info.name + ' is a student of ' + info.University + ' and he is ' + info.age + " years old."); /info为Object对象
(2)JSON.stringify()函數
作用:將 JavaScript 值轉換為 JavaScript 物件表示法 (JSON) 字串文法:JSON.stringify( value [, replacer] [, space])
參數:
value 必需,通常為需要轉換的JavaScript值(通常為物件或陣列)
example:
var info = {name:"GDT",age:,University:"GDUT"}; var json = JSON.stringify(info); //转换为JSON字符串 document.write(json); //output为{"name":"GDT","age":23,"University":"GDUT"}
(3)eval()函數
作用:eval() 函數可計算某個字串,並執行其中的 JavaScript 程式碼。語法:eval(string)
參數:
string 必需,要計算的字串,其中含有要計算的 JavaScript 表達式或要執行的語句。
example:
eval("x=;y=;document.write(x*y)"); //output为 document.write(eval("+")); //output为 var x=; document.write(eval(x+)); //output为
// JSON.parse() var json = '{"name":"GDT","age":,"University":"GDUT"}'; var info = JSON.parse(json); //解析为JSON对象 document.write(info); //output为[object Object] //eval() var json = '{"name":"GDT","age":,"University":"GDUT"}'; var info = eval('(' + json + ')'); //解析为JSON对象 document.write(info); //output为[object Object]
原因:歸結於eval本身的問題,由於json是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表達式。
alert(eval("{}")); // return undefined alert(eval('('+'{}'+')')); // return object[Object]
var str = '{"a":"b"}'; document.write(eval("("+str+")")); //正常解析为对象 var str = '{"a": (function(){alert("I can do something bad!");})()}'; eval('('+str+')'); //可以用来执行木马脚本
個人總結的時候到了,這是我人生第一篇的博客,在4月1號Fool's Day誕生,寫得不好的地方還希望各位多多見諒,現在技術非常渣,我很希望現在能夠一點一滴去累積知識,為日後的成功奠定好基礎,fighting~