使用javascript遍历内容未知的JSON数据

本文介绍了一种处理未知JSON数据的方法,通过将JSON字符串转换为JavaScript对象,并利用for...in语句遍历对象属性,实现对JSON数据的动态解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天看网上有关JSON的教程的时候,看到都是在知道JSON的内容的前提下,怎么来处理这个JSON的数据,例如有一个JSON数据是这样的:

[html]  view plain copy
  1.   {  
  2.     "people": [  
  3.           {  
  4.             "firstName": "Brett",  
  5.             "lastName": "McLaughlin",  
  6.             "email": "aaaa"  
  7.         },  
  8.           {  
  9.             "firstName": "Jason",  
  10.             "lastName": "Hunter",  
  11.             "email": "bbbb"  
  12.         },  
  13.           {  
  14.             "firstName": "Elliotte",  
  15.             "lastName": "Harold",  
  16.             "email": "cccc"  
  17.         }    
  18.     ]  
  19. }  


这样的内容已知的话,大家处理起来会很简单,例如把它赋值给一个变量例如obj,alert(obj.people[0].firstName)就会显示出Brett,但是如果我们不知道这个JSON的内容或者想写个通用的JSON处理程序的话肯定不能这样写。下面说说我想到的处理方法

1、我们把上面的JSON数据转换成字符串,假设这是后台返回的,需要我们来处理的JSON字符串,转换后是这样的:

[html]  view plain copy
  1. "{ \"people\": [{\"firstName\": \"Brett\", \"lastName\":\"McLaughlin\", \"email\": \"aaaa\" }, { \"firstName\": \"Jason\", \"lastName\":\"Hunter\", \"email\": \"bbbb\"}, { \"firstName\": \"Elliotte\", \"lastName\":\"Harold\", \"email\": \"cccc\" }]}";  


2、我们把这个字符串赋值给一个变量,变量名叫person:

[html]  view plain copy
  1. var person = "{ \"people\": [{\"firstName\": \"Brett\", \"lastName\":\"McLaughlin\", \"email\": \"aaaa\" }, { \"firstName\": \"Jason\", \"lastName\":\"Hunter\", \"email\": \"bbbb\"}, { \"firstName\": \"Elliotte\", \"lastName\":\"Harold\", \"email\": \"cccc\" }]}";  

3、我们知道,可以使用eval函数把这个字符串转换成对象:

[html]  view plain copy
  1. var obj = eval( "(" + person + ")");  


4、既然是一个对象,在javascript中就尅使用for...in..语法来遍历一个对象的属性:

[html]  view plain copy
  1. for(var o in obj){  
  2.     alert(o);//people  
  3.     alert(obj[o].length);//3  
  4. }  

第一步搞定,我们已经取到了“people”,很好,这正是我们想要的,既然obj[o]的长度为3,那我们在遍历下它,看看它有什么属性:

[html]  view plain copy
  1. for(var o in obj){  
  2.     var temp = obj[o];  
  3.     for(var i = 0 ; i < temp.length; i++){  
  4.         for(var t in temp[i]){  
  5.             alert(t + ";" + temp[i][t]);  
  6.         }  
  7.     }  
  8. }  

我 用的是火狐的浏览器,显示的结果是:firstName;Brett , lastName;McLaughlin .....

可以看到,这是这个JSON不管我们知不知道具体的内容,还是可以遍历出其内容来!









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值