json取值

来源:互联网 发布:淘宝网hd下载 编辑:程序博客网 时间:2024/06/05 23:00

一、$.each遍历json对象

查看一个简单的jQuery的例子来遍历一个JavaScript数组对象。

[javascript] view plain copy
  1. var json = [  
  2.     {"id":"1","tagName":"apple"},  
  3.     {"id":"2","tagName":"orange"},  
  4.     {"id":"3","tagName":"banana"},  
  5.     {"id":"4","tagName":"watermelon"},  
  6.     {"id":"5","tagName":"pineapple"}  
  7. ];  
  8.    
  9. $.each(json, function(i, obj) {  
  10.     alert(obj.tagName);  
  11. });  
上面的代码片断工作正常,提示 “apple”, “orange” … 等,如预期一样。


问题1: JSON 字符串。

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

二、json数组有长度json.arrayname.length,如果单纯是json格式,那么不能直接使用json.length方式获取长度,而应该使用其他方法。(注:arrayname为数组名)
例1:
现在有json1数据如下:
[javascript] view plain copy
  1. var json1={  
  2.     "abc":[  
  3.         {"name":"txt1"},  
  4.         {"name","txt2"}  
  5.     ]  
  6. };  
以上遍历的方法是:
[javascript] view plain copy
  1. for(var i=0;i<json1.abc.length;i++){  
  2.   
  3.     alert(json1.abc[i].name);  
  4.   
  5. }  
这里的json1.abc是一个数组,数组是由2个子json组成的,数组是有length属性的,而普通的json是没有该属性的。

例2:
现在有json2数据如下:
[javascript] view plain copy
  1. var json2={"name":"txt1","name2":"txt2"};  
json本身没有length属性,所以用length属性自然会出错。
[javascript] view plain copy
  1. for(var i=0;i<json2.length;i++){  
  2.   
  3.     alert(json2[i].text);  
  4.   
  5. }  
以上脚本执行时,将会出错。


那么要遍历这样的json怎么办呢?
我们可以这么做:
[javascript] view plain copy
  1. for(var js2 in json2){  
  2.   
  3.     alert( js2 + "=" + json2[js2]);  
  4.   
  5. }  

既然json没有length属性,如果要知道他的长度怎么办呢?
很简单,把上面的遍历改一下就是了:
[javascript] view plain copy
  1. var jslength=0;  
  2.   
  3. for(var js2 in json2){  
  4.   
  5.     jslength++;  
  6.   
  7. }  

把这段代码写成一个方法,以后调用就行了:
[javascript] view plain copy
  1. function getJsonLength(jsonData){  
  2.   
  3.     var jsonLength = 0;  
  4.   
  5.     for(var item in jsonData){  
  6.   
  7.         jsonLength++;  
  8.   
  9.     }  
  10.   
  11.     return jsonLength;  
  12.   
  13. }  

学习计算机编程技术一定要严谨认真,容不得半点马虎,学习最重要是把基础打牢,囫囵吞枣、不求甚解会给工作和学习带来很多隐患,效率上必须打折扣。写下来以自勉!
原创粉丝点击