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

JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式。因?yàn)椴捎锚?dú)立于語(yǔ)言的文本格式,也使用了類似于C語(yǔ)言家族的習(xí)慣,擁有了這些特性使使JSON稱為理想的數(shù)據(jù)交換語(yǔ)言,作用是易于閱讀和編寫,同時(shí)也易于機(jī)器解析和生成(一般用于網(wǎng)絡(luò)傳輸速率)。

(1)JSON.parse函數(shù)

作用:將json字符串轉(zhuǎn)換成json對(duì)象。

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

參數(shù):text ?必須;一個(gè)有效的json字符串。

reviver ?可選。

返回值:一個(gè)對(duì)象或數(shù)組。

example:


(2)JSON.stringify()函數(shù)?

作用:將json對(duì)象轉(zhuǎn)換成json字符串。

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

參數(shù):value ?必須;通常為對(duì)象或數(shù)組。

replacer 可選,用于轉(zhuǎn)換結(jié)果的函數(shù)或者數(shù)組。

space 可選。向返回值 JSON 文本添加縮進(jìn)、空格和換行符以使其更易于讀取。?

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

example:

(3) eval()函數(shù)

作用:eval()函數(shù)可計(jì)算某個(gè)字符串,并執(zhí)行其中的javascript表達(dá)式或要執(zhí)行的語(yǔ)句。

語(yǔ)法:eval(string)

參數(shù):?string ?必須,需要計(jì)算的字符串,其中含有要計(jì)算的javascript表達(dá)式或要執(zhí)行的語(yǔ)句。

返回值:返回計(jì)算string的值,沒(méi)有的話不做任何改變返回。

example:


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


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

原因:歸結(jié)于eval本身的問(wèn)題,由于json是以”{}”的方式來(lái)開(kāi)始以及結(jié)束的,在JS中,它會(huì)被當(dāng)成一個(gè)語(yǔ)句塊來(lái)處理,所以必須強(qiáng)制性的將它轉(zhuǎn)換成一種表達(dá)式。?

解決方法:加上圓括號(hào)的目的是迫使eval函數(shù)在處理JavaScript代碼的時(shí)候強(qiáng)制將括號(hào)內(nèi)的表達(dá)式(expression)轉(zhuǎn)化為對(duì)象,而不是作為語(yǔ)句(statement)來(lái)執(zhí)行。舉一個(gè)例子,例如對(duì)象字面量{},如若不加外層的括號(hào),那么eval會(huì)將大括號(hào)識(shí)別為JavaScript代碼塊的開(kāi)始和結(jié)束標(biāo)記,那么{}將會(huì)被認(rèn)為是執(zhí)行了一句空語(yǔ)句。請(qǐng)看下列例子的不同:

======================================下面舉一個(gè)在實(shí)際開(kāi)發(fā)中的小例子================================

一:組合參數(shù)


二:傳遞參數(shù)


三?:解析參數(shù)


最后附上js中獲取URL參數(shù)的共通方法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;

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容