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;
}