jQuery JSON的解析方式分享
更新時(shí)間:2011年04月05日 21:34:01 作者:
第一次用JSON作為jquery異步請(qǐng)求的傳輸對(duì)象,結(jié)果在jquery請(qǐng)求后返回的結(jié)果是字符串還是json對(duì)象上折騰了半天。
等到問(wèn)題解決了,也大致明白怎么個(gè)意思了,歸根結(jié)底還是對(duì)jquery對(duì)相關(guān)json對(duì)象獲取的理解有所偏差。
這里考慮都考慮的是服務(wù)器返回的是JSON形式的字符串的形式,對(duì)于利用JSONObject等插件封裝的JSON對(duì)象,與此亦是大同小異,這里不再做說(shuō)明。
這里首先給出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)求沒(méi)做類型說(shuō)明,或者以字符串方式接受,那么需要做一次對(duì)象化處理,方式不是太麻煩,就是將該字符串放于eval()中執(zhí)行一次。這種方式也適合以普通javascipt方式獲取json對(duì)象,以下舉例說(shuō)明:
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語(yǔ)句即可,其他不變。
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方法為例說(shuō)明數(shù)據(jù)處理方法:
這里特別需要注意的是方式1中的eval()方法是動(dòng)態(tài)執(zhí)行其中字符串(可能是js腳本)的,這樣很容易會(huì)造成系統(tǒng)的安全問(wèn)題。所以可以采用一些規(guī)避了eval()的第三方客戶端腳本庫(kù),比如JSON in JavaScript就提供了一個(gè)不超過(guò)3k的腳本庫(kù)。
這里考慮都考慮的是服務(wù)器返回的是JSON形式的字符串的形式,對(duì)于利用JSONObject等插件封裝的JSON對(duì)象,與此亦是大同小異,這里不再做說(shuō)明。
這里首先給出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)求沒(méi)做類型說(shuō)明,或者以字符串方式接受,那么需要做一次對(duì)象化處理,方式不是太麻煩,就是將該字符串放于eval()中執(zhí)行一次。這種方式也適合以普通javascipt方式獲取json對(duì)象,以下舉例說(shuō)明:
復(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語(yǔ)句即可,其他不變。
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方法為例說(shuō)明數(shù)據(jù)處理方法:
這里特別需要注意的是方式1中的eval()方法是動(dòng)態(tài)執(zhí)行其中字符串(可能是js腳本)的,這樣很容易會(huì)造成系統(tǒng)的安全問(wèn)題。所以可以采用一些規(guī)避了eval()的第三方客戶端腳本庫(kù),比如JSON in JavaScript就提供了一個(gè)不超過(guò)3k的腳本庫(kù)。
您可能感興趣的文章:
- jquery中JSON的解析方式
- 深入分析jquery解析json數(shù)據(jù)
- Jquery解析Json格式數(shù)據(jù)過(guò)程代碼
- 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)文章
一個(gè)簡(jiǎn)單的瀑布流效果(主體形式自寫(xiě))
瀑布流的主體即為 幾個(gè)ul標(biāo)簽,新增加的元素以 li的形式按照當(dāng)前 ul的高度有選擇性的插入到某個(gè)ul下,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈2013-05-05jQuery插件echarts去掉垂直網(wǎng)格線用法示例
這篇文章主要介紹了jQuery插件echarts去掉垂直網(wǎng)格線用法,結(jié)合實(shí)例形式對(duì)比分析了jQuery圖標(biāo)插件echarts針對(duì)垂直網(wǎng)格線的相關(guān)設(shè)置操作技巧,需要的朋友可以參考下2017-03-03jquery checkbox 勾選的bug問(wèn)題解決方案與分析
本文首先由一個(gè)在項(xiàng)目中遇到的jquery checkbox 勾選的bug的解決方案,引申出jQuery中attr()和prop()的差異分析,非常的實(shí)用,需要的小伙伴快來(lái)研究下吧2014-11-11jquery刪除數(shù)據(jù)記錄時(shí)的彈出提示效果
這篇文章主要介紹了jquery實(shí)現(xiàn)的刪除數(shù)據(jù)記錄時(shí)的彈出提示效果,需要的朋友可以參考下2014-05-05jquery的Tooltip插件 qtip使用詳細(xì)說(shuō)明
qTip是一個(gè)基于JQuery的Tooltip插件。它幾乎支持所有的主流瀏覽器。2010-09-09使用jquery實(shí)現(xiàn)別踩白塊小游戲的方法實(shí)例
別踩白塊是一款簡(jiǎn)單易上手的數(shù)字小游戲,下面這篇文章主要給大家介紹了關(guān)于使用jquery實(shí)現(xiàn)別踩白塊小游戲的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04關(guān)于jQuery.ajax()的jsonp碰上post詳解
這篇文章主要介紹了關(guān)于jQuery.ajax()的jsonp碰上post的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-07-07