今天看网上有关JSON的教程的时候,看到都是在知道JSON的内容的前提下,怎么来处理这个JSON的数据,例如有一个JSON数据是这样的:
{
"people": [
{
"firstName": "Brett",
"lastName": "McLaughlin",
"email": "aaaa"
},
{
"firstName": "Jason",
"lastName": "Hunter",
"email": "bbbb"
},
{
"firstName": "Elliotte",
"lastName": "Harold",
"email": "cccc"
}
]
}
这样的内容已知的话,大家处理起来会很简单,例如把它赋值给一个变量例如obj,alert(obj.people[0].firstName)就会显示出Brett,但是如果我们不知道这个JSON的内容或者想写个通用的JSON处理程序的话肯定不能这样写。下面说说我想到的处理方法
1、我们把上面的JSON数据转换成字符串,假设这是后台返回的,需要我们来处理的JSON字符串,转换后是这样的:
"{ \"people\": [{\"firstName\": \"Brett\", \"lastName\":\"McLaughlin\", \"email\": \"aaaa\" }, { \"firstName\": \"Jason\", \"lastName\":\"Hunter\", \"email\": \"bbbb\"}, { \"firstName\": \"Elliotte\", \"lastName\":\"Harold\", \"email\": \"cccc\" }]}";
2、我们把这个字符串赋值给一个变量,变量名叫person:
var person = "{ \"people\": [{\"firstName\": \"Brett\", \"lastName\":\"McLaughlin\", \"email\": \"aaaa\" }, { \"firstName\": \"Jason\", \"lastName\":\"Hunter\", \"email\": \"bbbb\"}, { \"firstName\": \"Elliotte\", \"lastName\":\"Harold\", \"email\": \"cccc\" }]}";
3、我们知道,可以使用eval函数把这个字符串转换成对象:
var obj = eval( "(" + person + ")");
4、既然是一个对象,在javascript中就尅使用for...in..语法来遍历一个对象的属性:
for(var o in obj){
alert(o);//people
alert(obj[o].length);//3
}
第一步搞定,我们已经取到了“people”,很好,这正是我们想要的,既然obj[o]的长度为3,那我们在遍历下它,看看它有什么属性:
for(var o in obj){
var temp = obj[o];
for(var i = 0 ; i < temp.length; i++){
for(var t in temp[i]){
alert(t + ";" + temp[i][t]);
}
}
}
我 用的是火狐的浏览器,显示的结果是:firstName;Brett , lastName;McLaughlin .....
可以看到,这是这个JSON不管我们知不知道具体的内容,还是可以遍历出其内容来!