企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
一、$.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” … 等,如预期一样。 问题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是没有该属性的。 例2: 现在有json2数据如下: ``` var json2={"name":"txt1","name2":"txt2"}; json本身没有length属性,所以用length属性自然会出错。 [javascript] view plain copy 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; } ```