ajax json的遍历,长度等

//json对象
一、$.each遍历json对象
查看一个简单的jQuery的例子来遍历一个JavaScript数组对象。
var json = [  
    {"id":"1","tagName":"apple"},  
    {"id":"2","tagName":"orange"},  
    {"id":"3","tagName":"banana"},  
    {"id":"4","tagName":"watermelon"},  
    {"id":"5","tagName":"pineapple"}  
];  
   
$.each(json, function(i, obj) {  
    alert(obj.tagName);  
});
上面的代码片断工作正常,提示 “apple”, “orange” … 等,如预期一样。  

//json字符串
问题1: JSON 字符串。
下面的例子中,声明了一个JSON字符串(随附单或双引号)直接地。
var json = '[  
    {"id":"1","tagName":"apple"},  
    {"id":"2","tagName":"orange"},  
    {"id":"3","tagName":"banana"},  
    {"id":"4","tagName":"watermelon"},  
    {"id":"5","tagName":"pineapple"}  
    ]';  
   
$.each(json, function(i, obj) {  
    alert(obj.tagName);  
});
在Chrome中,它显示在控制台下面的错误:
Uncaught SyntaxError: Unexpected token ILLEGAL
解决方案:JSON字符串转换为JavaScript对象。
要修复它,通过标准JSON.parse()或jQuery 的 $.parseJSON 将其转换为JavaScript对象。
var json = '[  
    {"id":"1","tagName":"apple"},  
    {"id":"2","tagName":"orange"},  
    {"id":"3","tagName":"banana"},  
    {"id":"4","tagName":"watermelon"},  
    {"id":"5","tagName":"pineapple"}  
    ]';  
   
$.each(JSON.parse(json), function(i, obj) {  
    alert(obj.tagName);  
});  
   
//or   
   
$.each($.parseJSON(json), function(i, obj) {  
    alert(obj.tagName);  
});  


二、json数组有长度json.arrayname.length,如果单纯是json格式,那么不能直接使用json.length方式获取长度,而应该使用其他方法。(注:arrayname为数组名)
例1:
现在有json1数据如下:
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是没有该属性的。   


现在有json2数据如下:
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){  //使用 for-in 来循环对象的属性
  
    alert( js2 + "=" + json2[js2]);  
  
}
//获得长度
var jslength=0;  
  
for(var js2 in json2){  
  
    jslength++;  
  
}
//把这段代码写成一个方法,以后调用就行了: 
function getJsonLength(jsonData){  
  
    var jsonLength = 0;  
  
    for(var item in jsonData){  
  
        jsonLength++;  
  
    }  
  
    return jsonLength;  
  
}  

猜你喜欢

转载自ztao2333.iteye.com/blog/2360921