怎樣更好對JSONObject插件封裝JSON對象
JSONObject插件與JAVA語言插件大致相同,下面的幾個例子都在枚舉對應(yīng)屬性值均為整形。你可能想到,難道還能定義成別的類型?要回答這個問題,得先知道咱們這個枚舉實現(xiàn)的原理,下面進行學(xué)習(xí)研究探討。
對于利用JSONObject插件封裝的JSON對象,與此亦是大同小異,這里不再做說明。 這里首先給出JSON字符串集,字符串集如下:
- var data="
- {
- root:
- [
- {name:'1',value:'0'},
- {name:'6101',value:'北京市'},
- {name:'6102',value:'天津市'},
- {name:'6103',value:'上海市'},
- {name:'6104',value:'重慶市'},
- {name:'6105',value:'渭南市'},
- {name:'6106',value:'延安市'},
- {name:'6107',value:'漢中市'},
- {name:'6108',value:'榆林市'},
- {name:'6109',value:'安康市'},
- {name:'6110',value:'商洛市'}
- ]
- }";
這里以jquery異步獲取的數(shù)據(jù)類型——json對象和字符串為依據(jù),分別介紹兩種方式獲取到的結(jié)果處理方式。 #t#
1.對于服務(wù)器返回的JSONObject插件,如果jquery異步請求沒做類型說明,或者以字符串方式接受,那么需要做一次對象化處理,方式不是太麻煩,就是將該字符串放于eval()中執(zhí)行一次。這種方式也適合以普通javascipt方式獲取json對象,以下舉例說明:
- var dataObj=eval("("+data+")");//轉(zhuǎn)換為json對象
- alert(dataObj.root.length);//輸出root的子對象數(shù)量
每種方法是使用一個長度為 130 的數(shù)組來測試,其中每個元素的長度是多種多樣的,防止瀏覽器對一定長度的字符串做特殊的優(yōu)化;每種方法測試了 1000 次;下面的結(jié)果顯示,執(zhí)行完這 1000 次需要的時間:
- $.getJSON("http://www.phpzixue.cn/",{param:"gaoyusi"},function(data){
- //此處返回的data已經(jīng)是json對象
- //以下其他操作同第一種情況
- $.each(data.root,function(idx,item){
- if(idx==0){
- return true;//同countinue,返回false同break
- }
- alert("name:"+item.name+",value:"+item.value);
- });
- });