JSON對象長度和遍歷方法


json數組有長度json.abc.length,如果單純是json格式,那么不能直接使用json.length方式獲取長度,而應該使用其他方法。

最近在修改一個html頁面的JS的時候遍歷JSON對象,卻怎么也調試不通過。怪這個HTML網頁不知道用了什么方法禁止了js錯誤提示,剛開始的時候不知道有這個問題,用chrome的開發人員工具都沒發現錯誤,就是在獲取 json.length的時候總是undefined,所以就以為自己定義的json方法不對。折騰了一個晚上一點進展都沒有,頭都整暈了,太晚,最后失望地洗洗睡了。

第二天晚上就是不甘心這個小問題能難倒我,於是靜下心來仔細查原因。自己新建一個空的HTML文件在其中測試,發現JSON對象根本沒有length屬性,在搜索引擎查找也沒有比較權威的參考文檔提到json有這個屬性。博客也很少有提到 json.length 的。但是奇怪的是我明明記得json有length,我還用過,程序沒錯,正確運行。

那是怎么回事呢?最后看某博客一篇文章的時候回想起以前編程的細節,記得以前的json的子對象是個數組而這次的不是,這下終於恍然大悟了。

以前我使用json的這樣的結構:

var json1={"abc":[{"name":"txt1"},{"name","txt2"}]};

遍歷的方法是:

for(var i=0;i<json1.abc.length;i++){alert(json1.abc[i].name);}

這里的json1.abc是一個數組,數組是由2個子json組成的,數組是有length屬性的,所以說能工作。

而我這一次的json是這樣的:

var json2={"name":"txt1","name2":"txt2"};

而json本身沒有length屬性,所以用length屬性自然會出錯:

for(var i=0;i<json2.length;i++){alert(json2[i].text);}

那么要遍歷這樣的json怎么辦呢?這樣做:

for(var js2 in json2){

alert( js2+"="+json2[js2]);

}

既然json沒有length屬性,如果要知道他的長度怎么辦呢?很簡單,把上面的遍歷改一下就是了:

var jslength=0;

for(var js2 in json2){

jslength++;

}

把這段代碼寫成一個方法,以后調用就行了:

function getJsonLength(jsonData){

var jsonLength = 0;

for(var item in jsonData){

jsonLength++;

}

return jsonLength;

}

學習計算機編程技術一定要嚴謹認真,容不得半點馬虎,學習最重要是把基礎打牢,囫圇吞棗、不求甚解會給工作和學習帶來很多隱患,效率上必須打折扣。留下來以自勉!

 

原文鏈接:前端開發博客 (http://caibaojian.com/json-length.html)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM