首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

这个json小弟我如何也遍历不明白,求解

2013-09-07 
这个json我怎么也遍历不明白,求解?求以下json的遍历方法,感谢!!!var carData{34:{name:A \u963f\u

这个json我怎么也遍历不明白,求解?
求以下json的遍历方法,感谢!!!


var carData={"'34'":{"name":"A \u963f\u65af\u987f\u00b7\u9a6c\u4e01"
,"brand":{"'61'":{"name":"\u963f\u65af\u987f\u00b7\u9a6c\u4e01"
,"pserise":{"'298'":{"name":"Rapide","import":"2","model":{"'11563'":"Rapide 6.0L S","'5290'":"Rapide 6.0L"}},"'299'":{"name":"V12 Vantage","import":"2"
,"model":{"'11446'":"V12 Vantage 6.0L S","'8947'":"V12 Vantage 6.0 Roadster","'5291'":"V12 Vantage 6.0 Manual Coupe"}},"'629'":{"name":"V12 Zagato","import":"2"
,"model":{"'9037'":"V12 Zagato 6.0L"}},"'300'":{"name":"V8 Vantage","import":"2"
,"model":{"'5292'":"V8 Vantage 4.7 S Coupe","'5293'":"V8 Vantage 4.7 S Roadster","'5294'":"V8 Vantage 4.7 Sportshift Coupe","'5295'":"V8 Vantage 4.7 Sportshift Roadster"}},"'643'":{"name":"Vanquish","import":"2","model":{"'9057'":"Vanquish 6.0 \u57fa\u672c\u578b"}},"'301'":{"name":"Virage","import":"2"
,"model":{"'5301'":"Virage 6.0 Coupe","'5302'":"Virage 6.0 Volante"}},
"'302'":{"name":"\u963f\u65af\u987f\u9a6c\u4e01DB9","import":"2"
,"model":{"'10244'":"\u963f\u65af\u987f\u9a6c\u4e01DB9 6.0L Coupe"}}
,"'303'":{"name":"\u963f\u65af\u987f\u9a6c\u4e01DBS","import":"2"
,"model":{"'5311'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Touchtronic Coupe","'5312'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Manual Volante","'5313'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Touchtronic Volante","'5314'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Manual Coupe"}}}}}}}

[解决办法]
用for in 来遍历
for(var name in carData) {
    alert(name+":"+carData[name]);
}
[解决办法]

var carData = {
            "'34'": {
                "name": "A 阿斯顿·马丁",
                "brand": {
                    "'61'": {


                        "name": "阿斯顿·马丁",
                        "pserise": {
                            "'298'": {
                                "name": "Rapide",
                                "import": "2",
                                "model": {
                                    "'11563'": "Rapide 6.0L S",
                                    "'5290'": "Rapide 6.0L"
                                }
                            },
                            "'299'": {
                                "name": "V12 Vantage",
                                "import": "2",
                                "model": {
                                    "'11446'": "V12 Vantage 6.0L S",


                                    "'8947'": "V12 Vantage 6.0 Roadster",
                                    "'5291'": "V12 Vantage 6.0 Manual Coupe"
                                }
                            },
                            "'629'": {
                                "name": "V12 Zagato",
                                "import": "2",
                                "model": {
                                    "'9037'": "V12 Zagato 6.0L"
                                }
                            },
                            "'300'": {
                                "name": "V8 Vantage",
                                "import": "2",


                                "model": {
                                    "'5292'": "V8 Vantage 4.7 S Coupe",
                                    "'5293'": "V8 Vantage 4.7 S Roadster",
                                    "'5294'": "V8 Vantage 4.7 Sportshift Coupe",
                                    "'5295'": "V8 Vantage 4.7 Sportshift Roadster"
                                }
                            },
                            "'643'": {
                                "name": "Vanquish",
                                "import": "2",
                                "model": {
                                    "'9057'": "Vanquish 6.0 基本型"
                                }
                            },


                            "'301'": {
                                "name": "Virage",
                                "import": "2",
                                "model": {
                                    "'5301'": "Virage 6.0 Coupe",
                                    "'5302'": "Virage 6.0 Volante"
                                }
                            },
                            "'302'": {
                                "name": "阿斯顿马丁DB9",
                                "import": "2",
                                "model": {
                                    "'10244'": "阿斯顿马丁DB9 6.0L Coupe"
                                }
                            },


                            "'303'": {
                                "name": "阿斯顿马丁DBS",
                                "import": "2",
                                "model": {
                                    "'5311'": "阿斯顿马丁DBS 6.0 Touchtronic Coupe",
                                    "'5312'": "阿斯顿马丁DBS 6.0 Manual Volante",
                                    "'5313'": "阿斯顿马丁DBS 6.0 Touchtronic Volante",
                                    "'5314'": "阿斯顿马丁DBS 6.0 Manual Coupe"
                                }
                            }
                        }
                    }
                }
            }
        };


按照结构,一直遍历吧。
[解决办法]


,"brand":{"'61'":{"name":"\u963f\u65af\u987f\u00b7\u9a6c\u4e01"
,"pserise":{"'298'":{"name":"Rapide","import":"2","model":{"'11563'":"Rapide 6.0L S","'5290'":"Rapide 6.0L"}},"'299'":{"name":"V12 Vantage","import":"2"
,"model":{"'11446'":"V12 Vantage 6.0L S","'8947'":"V12 Vantage 6.0 Roadster","'5291'":"V12 Vantage 6.0 Manual Coupe"}},"'629'":{"name":"V12 Zagato","import":"2"
,"model":{"'9037'":"V12 Zagato 6.0L"}},"'300'":{"name":"V8 Vantage","import":"2"
,"model":{"'5292'":"V8 Vantage 4.7 S Coupe","'5293'":"V8 Vantage 4.7 S Roadster","'5294'":"V8 Vantage 4.7 Sportshift Coupe","'5295'":"V8 Vantage 4.7 Sportshift Roadster"}},"'643'":{"name":"Vanquish","import":"2","model":{"'9057'":"Vanquish 6.0 \u57fa\u672c\u578b"}},"'301'":{"name":"Virage","import":"2"
,"model":{"'5301'":"Virage 6.0 Coupe","'5302'":"Virage 6.0 Volante"}},
"'302'":{"name":"\u963f\u65af\u987f\u9a6c\u4e01DB9","import":"2"
,"model":{"'10244'":"\u963f\u65af\u987f\u9a6c\u4e01DB9 6.0L Coupe"}}
,"'303'":{"name":"\u963f\u65af\u987f\u9a6c\u4e01DBS","import":"2"
,"model":{"'5311'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Touchtronic Coupe","'5312'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Manual Volante","'5313'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Touchtronic Volante","'5314'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Manual Coupe"}}}}}}}
;
function df(io)
{
var dd = "<ul>";
for (var i in io)
dd+="<li><b>"+i+":</b> "+(typeof(io[i])=="object"?df(io[i]):io[i])+"</li>";
dd+="</ul>";
return dd;
}
document.write(df(carData));;


[解决办法]
结构都知道,用[]或者.取数据就行了,由于你的有些键名称不是javascript的合法变量名称,所有要用[]来取
[解决办法]


,"model":{"'5301'":"Virage 6.0 Coupe","'5302'":"Virage 6.0 Volante"}},
"'302'":{"name":"\u963f\u65af\u987f\u9a6c\u4e01DB9","import":"2"
,"model":{"'10244'":"\u963f\u65af\u987f\u9a6c\u4e01DB9 6.0L Coupe"}}
,"'303'":{"name":"\u963f\u65af\u987f\u9a6c\u4e01DBS","import":"2"
,"model":{"'5311'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Touchtronic Coupe","'5312'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Manual Volante","'5313'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Touchtronic Volante","'5314'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Manual Coupe"}}}}}}}


var rs=[];
function getvs(o){
for(var k in o) {
typeof(o[k])=='object'?getvs(o[k] ):rs.push( k+':'+o[k]  )
  }
}
getvs(carData);
document.write( rs.join('<br/>') );


[解决办法]
用递归遍历,代码如下,将你的JSON对象,转换层JSON字符串
alert(jsonToStr(carData))
function jsonToStr(json){
if(json instanceof Array){ //如果是数组
var tmpArr = [];
for(var i=0;i<json.length;i++){
tmpArr.push(jsonToStr(json[i])); //递归
}
return '['+tmpArr.join(",")+']'; //如果json是数组,那么最终会return这个
}else if(json instanceof Object){ //如果是对象
var tmpArr = [];
for(var n in json){
tmpArr.push('"'+n+'":'+jsonToStr(json[n])); //递归
}
return '{'+tmpArr.join(",")+'}'; //如果json是对象,那么最终会return这个
}else if(typeof json == 'string'){ //如果是字符串
return '"'+json.replace(/(\\
[解决办法]
")/g,"\\$1").replace(/\n/g,"\\n")+'"'; //如果json是字符串,就过滤掉斜杠、双引号、换行再返回
}else{
return json; //否则就原样返回
}
}

[解决办法]


,"model":{"'5292'":"V8 Vantage 4.7 S Coupe","'5293'":"V8 Vantage 4.7 S Roadster","'5294'":"V8 Vantage 4.7 Sportshift Coupe","'5295'":"V8 Vantage 4.7 Sportshift Roadster"}},"'643'":{"name":"Vanquish","import":"2","model":{"'9057'":"Vanquish 6.0 \u57fa\u672c\u578b"}},"'301'":{"name":"Virage","import":"2"
,"model":{"'5301'":"Virage 6.0 Coupe","'5302'":"Virage 6.0 Volante"}},
"'302'":{"name":"\u963f\u65af\u987f\u9a6c\u4e01DB9","import":"2"
,"model":{"'10244'":"\u963f\u65af\u987f\u9a6c\u4e01DB9 6.0L Coupe"}}
,"'303'":{"name":"\u963f\u65af\u987f\u9a6c\u4e01DBS","import":"2"
,"model":{"'5311'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Touchtronic Coupe","'5312'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Manual Volante","'5313'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Touchtronic Volante","'5314'":"\u963f\u65af\u987f\u9a6c\u4e01DBS 6.0 Manual Coupe"}}}}}}}
;
function df(io)
{
var dd = "<ul>";
for (var i in io)
dd+="<li><b>"+i+":</b> "+(typeof(io[i])=="object"?df(io[i]):io[i])+"</li>";
dd+="</ul>";
return dd;
}
document.write(df(carData));;


是能遍历无限级

热点排行