遍历JSON、获取JSON长度的方法
2015-06-24 14:48
621 查看
一、$.each遍历json对象
查看一个简单的jQuery的例子来遍历一个JavaScript数组对象。
在Chrome中,它显示在控制台下面的错误:
Uncaught SyntaxError: Unexpected token ILLEGAL
解决方案:JSON字符串转换为JavaScript对象。
要修复它,通过标准JSON.parse()或jQuery 的 $.parseJSON 将其转换为JavaScript对象。
二、json数组有长度json.arrayname.length,如果单纯是json格式,那么不能直接使用json.length方式获取长度,而应该使用其他方法。(注:arrayname为数组名)
例1:
现在有json1数据如下:
这里的json1.abc是一个数组,数组是由2个子json组成的,数组是有length属性的,而普通的json是没有该属性的。
例2:
现在有json2数据如下:
那么要遍历这样的json怎么办呢?
我们可以这么做:
既然json没有length属性,如果要知道他的长度怎么办呢?
很简单,把上面的遍历改一下就是了:
把这段代码写成一个方法,以后调用就行了:
学习计算机编程技术一定要严谨认真,容不得半点马虎,学习最重要是把基础打牢,囫囵吞枣、不求甚解会给工作和学习带来很多隐患,效率上必须打折扣。写下来以自勉!
查看一个简单的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属性自然会出错。
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; }
学习计算机编程技术一定要严谨认真,容不得半点马虎,学习最重要是把基础打牢,囫囵吞枣、不求甚解会给工作和学习带来很多隐患,效率上必须打折扣。写下来以自勉!
相关文章推荐
- 详解JavaScript中的客户端消息框架设计原理
- js typeof instanceof
- javascript window.opener的用法分析
- js关闭当前页面(窗口)的几种方式总结
- JavaScript面向对象精要(二)
- JavaScript面向对象精要(一)
- 浅谈关于JavaScript API设计的一些建议和准则
- JS正则表达式验证数字
- JS格式化 /Date(xxxxxx)/的日期类型
- 59 js validate 调试模式 tp版本和css样式
- 详解JavaScript的策略模式编程
- [leetcode][javascript]Number of 1 Bits
- 页面 JavaScript 存在多个同名方法的调用分析
- NPAPI插件与JS交互开发详细记录
- validate.plugin.js 验证插件
- date.plugin.js 日期插件
- bzoj1015 [JSOI2008]星球大战starwar
- js 笔记
- JS 将 string 转换成为 number
- RapidJson简单实例