今天看网上有关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不管我们知不知道具体的内容,还是可以遍历出其内容来!