Js中JSON.stringify()與JSON.parse()與eval()詳解及使用案例


JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。因為采用獨立於語言的文本格式,也使用了類似於C語言家族的習慣,擁有了這些特性使使JSON稱為理想的數據交換語言,作用是易於閱讀和編寫,同時也易於機器解析和生成(一般用於網絡傳輸速率)。

 

(1)JSON.parse函數 

  作用:將json字符串轉換成json對象。

語法:JSON. parse(text[,reviver]).

參數:text  必須;一個有效的json字符串。

reviver  可選。

返回值:一個對象或數組。

example:

 

(2)JSON.stringify()函數 

作用:將json對象轉換成json字符串。

語法:JSON.stringify(value [, replacer] [, space]) 

參數:value  必須;通常為對象或數組。

replacer 可選,用於轉換結果的函數或者數組。

space 可選。向返回值 JSON 文本添加縮進、空格和換行符以使其更易於讀取。 

返回值:一個包含JSON文本的字符串。

example:

 

(3) eval()函數

作用:eval()函數可計算某個字符串,並執行其中的javascript表達式或要執行的語句。

語法:eval(string)

參數: string  必須,需要計算的字符串,其中含有要計算的javascript表達式或要執行的語句。

返回值:返回計算string的值,沒有的話不做任何改變返回。

example:

 

使用eval()函數也可以將JSON字符串解析為對象,這個功能能完成JSON.parse()的功能,但是有不一樣的地方,請看下面代碼 :

 

不知道大家有木有注意到eval()還要用一對圓括號將字符串包起來,對此我尋找到比較好的解釋就是: 

原因:歸結於eval本身的問題,由於json是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表達式。 

  解決方法:加上圓括號的目的是迫使eval函數在處理JavaScript代碼的時候強制將括號內的表達式(expression)轉化為對象,而不是作為語句(statement)來執                 行。舉一個例子,例如對象字面量{},如若不加外層的括號,那么eval會將大括號識別為JavaScript代碼塊的開始和結束標記,那么{}將會被認為是執行了一句空語                 句。請看下列例子的不同:

 

 

 ======================================下面舉一個在實際開發中的小例子================================

一:組合參數 

 

二:傳遞參數

三 :解析參數

 

 

最后附上js中獲取URL參數的共通方法getRequest()方法:

getRequest : function() {  

var url = location.search; //獲取url中"?"符后的字串

var theRequest = new Object();

if (url.indexOf("?") != -1) {

var str = url.substr(1);

strs = str.split("&");

for(var i = 0; i < strs.length; i ++) {

theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]); }

}

return theRequest;

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM