jQuery JSON的解析方式分享
更新時(shí)間:2011年04月05日 21:34:01 作者:
第一次用JSON作為jquery異步請(qǐng)求的傳輸對(duì)象,結(jié)果在jquery請(qǐng)求后返回的結(jié)果是字符串還是json對(duì)象上折騰了半天。
等到問題解決了,也大致明白怎么個(gè)意思了,歸根結(jié)底還是對(duì)jquery對(duì)相關(guān)json對(duì)象獲取的理解有所偏差。
這里考慮都考慮的是服務(wù)器返回的是JSON形式的字符串的形式,對(duì)于利用JSONObject等插件封裝的JSON對(duì)象,與此亦是大同小異,這里不再做說明。
這里首先給出JSON字符串集,字符串集如下:
代碼如下:
var data="
{
root:
[
{name:'1',value:'0'},
{name:'6101',value:'西安市'},
{name:'6102',value:'銅川市'},
{name:'6103',value:'寶雞市'},
{name:'6104',value:'咸陽(yáng)市'},
{name:'6105',value:'渭南市'},
{name:'6106',value:'延安市'},
{name:'6107',value:'漢中市'},
{name:'6108',value:'榆林市'},
{name:'6109',value:'安康市'},
{name:'6110',value:'商洛市'}
]
}";
這里以jquery異步獲取的數(shù)據(jù)類型——json對(duì)象和字符串為依據(jù),分別介紹兩種方式獲取到的結(jié)果處理方式。
1.對(duì)于服務(wù)器返回的JSON字符串,如果jquery異步請(qǐng)求沒做類型說明,或者以字符串方式接受,那么需要做一次對(duì)象化處理,方式不是太麻煩,就是將該字符串放于eval()中執(zhí)行一次。這種方式也適合以普通javascipt方式獲取json對(duì)象,以下舉例說明:
var dataObj=eval("("+data+")");//轉(zhuǎn)換為json對(duì)象
alert(dataObj.root.length);//輸出root的子對(duì)象數(shù)量
$.each(dataObj.root,fucntion(idx,item){
if(idx==0){
return true;
}
//輸出每個(gè)root子對(duì)象的名稱和值
alert("name:"+item.name+",value:"+item.value);
})
注:對(duì)于一般的js生成json對(duì)象,只需要將$.each()方法替換為for語句即可,其他不變。
2.對(duì)于服務(wù)器返回的JSON字符串,如果jquery異步請(qǐng)求將type(一般為這個(gè)配置屬性)設(shè)為“json”,或者利用$.getJSON()方法獲得服務(wù)器返回,那么就不需要eval()方法了,因?yàn)檫@時(shí)候得到的結(jié)果已經(jīng)是json對(duì)象了,只需直接調(diào)用該對(duì)象即可,這里以$.getJSON方法為例說明數(shù)據(jù)處理方法:
這里特別需要注意的是方式1中的eval()方法是動(dòng)態(tài)執(zhí)行其中字符串(可能是js腳本)的,這樣很容易會(huì)造成系統(tǒng)的安全問題。所以可以采用一些規(guī)避了eval()的第三方客戶端腳本庫(kù),比如JSON in JavaScript就提供了一個(gè)不超過3k的腳本庫(kù)。
這里考慮都考慮的是服務(wù)器返回的是JSON形式的字符串的形式,對(duì)于利用JSONObject等插件封裝的JSON對(duì)象,與此亦是大同小異,這里不再做說明。
這里首先給出JSON字符串集,字符串集如下:
代碼如下:
復(fù)制代碼 代碼如下:
var data="
{
root:
[
{name:'1',value:'0'},
{name:'6101',value:'西安市'},
{name:'6102',value:'銅川市'},
{name:'6103',value:'寶雞市'},
{name:'6104',value:'咸陽(yáng)市'},
{name:'6105',value:'渭南市'},
{name:'6106',value:'延安市'},
{name:'6107',value:'漢中市'},
{name:'6108',value:'榆林市'},
{name:'6109',value:'安康市'},
{name:'6110',value:'商洛市'}
]
}";
這里以jquery異步獲取的數(shù)據(jù)類型——json對(duì)象和字符串為依據(jù),分別介紹兩種方式獲取到的結(jié)果處理方式。
1.對(duì)于服務(wù)器返回的JSON字符串,如果jquery異步請(qǐng)求沒做類型說明,或者以字符串方式接受,那么需要做一次對(duì)象化處理,方式不是太麻煩,就是將該字符串放于eval()中執(zhí)行一次。這種方式也適合以普通javascipt方式獲取json對(duì)象,以下舉例說明:
復(fù)制代碼 代碼如下:
var dataObj=eval("("+data+")");//轉(zhuǎn)換為json對(duì)象
alert(dataObj.root.length);//輸出root的子對(duì)象數(shù)量
$.each(dataObj.root,fucntion(idx,item){
if(idx==0){
return true;
}
//輸出每個(gè)root子對(duì)象的名稱和值
alert("name:"+item.name+",value:"+item.value);
})
注:對(duì)于一般的js生成json對(duì)象,只需要將$.each()方法替換為for語句即可,其他不變。
2.對(duì)于服務(wù)器返回的JSON字符串,如果jquery異步請(qǐng)求將type(一般為這個(gè)配置屬性)設(shè)為“json”,或者利用$.getJSON()方法獲得服務(wù)器返回,那么就不需要eval()方法了,因?yàn)檫@時(shí)候得到的結(jié)果已經(jīng)是json對(duì)象了,只需直接調(diào)用該對(duì)象即可,這里以$.getJSON方法為例說明數(shù)據(jù)處理方法:
這里特別需要注意的是方式1中的eval()方法是動(dòng)態(tài)執(zhí)行其中字符串(可能是js腳本)的,這樣很容易會(huì)造成系統(tǒng)的安全問題。所以可以采用一些規(guī)避了eval()的第三方客戶端腳本庫(kù),比如JSON in JavaScript就提供了一個(gè)不超過3k的腳本庫(kù)。
您可能感興趣的文章:
- jquery中JSON的解析方式
- 深入分析jquery解析json數(shù)據(jù)
- Jquery解析Json格式數(shù)據(jù)過程代碼
- JQuery解析HTML、JSON和XML實(shí)例詳解
- jquery解析JSON數(shù)據(jù)示例代碼
- js/jquery解析json和數(shù)組格式的方法詳解
- jquery遍歷篩選數(shù)組的幾種方法和遍歷解析json對(duì)象
- jquery eval解析JSON中的注意點(diǎn)介紹
- jQuery怎么解析Json字符串(Json格式/Json對(duì)象)
- jquery JSON的解析方式
- jQuery解析Json實(shí)例詳解
相關(guān)文章
jQuery監(jiān)聽瀏覽器窗口大小的變化實(shí)例
下面小編就為大家?guī)硪黄猨Query監(jiān)聽瀏覽器窗口大小的變化實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
jQuery獲取cookie值及刪除cookie用法實(shí)例
這篇文章主要介紹了jQuery獲取cookie值及刪除cookie用法,實(shí)例分析了jQuery操作cookie時(shí)域和路徑的作用,以及針對(duì)cookie的讀取與刪除技巧,需要的朋友可以參考下2016-04-04
jquery自動(dòng)補(bǔ)齊功能插件flexselect用法示例
這篇文章主要介紹了jquery自動(dòng)補(bǔ)齊功能插件flexselect用法,結(jié)合實(shí)例形式分析了flexselect實(shí)現(xiàn)自動(dòng)補(bǔ)齊功能的操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-08-08
jquery hover 不停閃動(dòng)問題的解決方法(亦為stop()的使用)
下面小編就為大家?guī)硪黄猨query hover 不停閃動(dòng)問題的解決方法(亦為stop()的使用)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
jQuery Validation PlugIn的使用方法詳解
這篇文章主要介紹了jQuery Validation PlugIn的使用方法,需要的朋友可以參考下2015-12-12
jquery 圖片Silhouette Fadeins漸顯效果
經(jīng)常漂流在css-tricks看到這篇文章,就順便搬了過來,下面譯文都是用css-tricks口吻來描述的。2010-02-02
checkbox 選中一個(gè)另一個(gè)checkbox也會(huì)選中的實(shí)現(xiàn)代碼
本文給大家?guī)砹薱heckbox選擇器之checkbox 選中一個(gè)另一個(gè)checkbox也會(huì)選中的實(shí)現(xiàn)代碼 ,非常不錯(cuò),有需要的可以參考下2016-07-07
jQuery Easyui 驗(yàn)證兩次密碼輸入是否相等
easyui是一種基于jQuery的用戶界面插件集合。接下來通過本文給大家介紹jQuery Easyui 驗(yàn)證兩次密碼輸入是否相等的相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧2016-05-05

