JSON.parse()、JSON.stringify()和eval()的作用
阿新 • • 發佈:2020-08-05
JSON.parse() 函式
作用: 將JavaScript 物件表示法(json)字串轉換成物件
語法: JSON.parse(text, [,reviver])
引數: text: 必需, 一個有效的 json 字串
reviver:可選。一個轉換結果的函式。將為物件的每個成員呼叫此函式
返回值: 返回一個物件或者陣列
返回值:返回計算string的值,如果有的話 (沒有則不做任何改變返回)
使用eval()函式也可以將JSON字串解析為物件,這個功能能完成JSON.parse()的功能,但是有不一樣的地方,請看下面程式碼
var json = '{"name":"GDT","age":23,"University":"GDUT"}'; var info = JSON.parse(json); //解析為JSON物件 console.log(json) // 結果 {"name":"GDT","age":23,"University":"GDUT"}JSON.stringify() 函式 作用: 將 JavaScript 值轉換為 JavaScript 物件的表示式(JSON) 字串 與 JSON.parse作用相反 語法: JSON.stringify(value, [,replacer] [,space]) 引數: value: 必需,通常為需要轉換的JavaScript值(通常為物件或者陣列) replacer: 可選,用於轉換結果的函式或者陣列 space: 可選。向返回值 JSON 文字新增縮排、空格和換行符以使其更易於讀取。 返回值:一個包含JSON文字的字串console.log(typeof info) // 結果 object
var json = {"name":"GDT","age":23,"University":"GDUT"} var info = JSON.stringify(json) // 解析為JSON字串 console.log(info) // 結果 {"name":"GDT","age":23,"University":"GDUT"}eval() 函式 作用:eval() 函式可計算某個字串,並執行其中的的 JavaScript 程式碼。 語法:eval(string) 引數: string: 必需,要計算的字串,其中含有要計算的 JavaScript 表示式或要執行的語句。
console.log(typeof info) // string
// JSON.parse() var json = '{"name":"GDT","age":23,"University":"GDUT"}'; var info = JSON.parse(json); //解析為JSON物件 document.write(info); //output為[object Object] //eval() var json = '{"name":"GDT","age":23,"University":"GDUT"}'; var info = eval('(' + json + ')'); //解析為JSON物件 document.write(info); //output為[object Object]不知道大家有木有注意到eval()還要用一對圓括號將字串包起來,對此我尋找到比較好的解釋就是: 原因:歸結於eval本身的問題,由於json是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表示式。 解決方法:加上圓括號的目的是迫使eval函式在處理JavaScript程式碼的時候強制將括號內的表示式(expression)轉化為物件,而不是作為語句(statement)來執行。舉一個例子,例如物件字面量{},如若不加外層的括號,那麼eval會將大括號識別為JavaScript程式碼塊的開始和結束標記,那麼{}將會被認為是執行了一句空語句。