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

求json to array并展示array!

2013-09-12 
求json to array并显示array!!!昨天问了关于以下json遍历的问题,遍历会了,但如何把其转成数组并取值不会,

求json to array并显示array!!!
昨天问了关于以下json遍历的问题,遍历会了,但如何把其转成数组并取值不会,还得麻烦朋友们!!!
到时我就可以通过相应id找到相应的name等!!!


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"}}}}}}}

[解决办法]
你说的是key-value形式的存取?
参考

<!doctype html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<script type="text/javascript">
var data = [{"a":"xx","b":"xx","动态值":"xx"},{"a":"xx","b":"xx"}];
for (var i in data){
for (var j in data[i]){
alert(j);
alert(data[i][j]);
}
}
</script>
</body>
</html>

------解决方案--------------------


方式一:用jquery的转换方法:
var json = $.parseJSON(carData);
方式二:用json2.js来转换:
var json = JSON.parse(carData);//转化成json对象
var jsonStr = JSON.stringify(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"}}}}}}}


function toArr(obj){
var re={};
(function f(o){
for(var k in o)
 if(typeof o[k]=='object'){
  var k2=k.replace(/['"]/g,'');
   /^\d+$/.test(k2)&&(re[k2]=o[k]),f(o[k]); 
}
})(obj);
return re;
}

var arr=toArr(carData);

 alert( arr[302].name )  //通过ID取值
alert( arr[61].name )


[解决办法]
引用:
你写的应该是了,但我现在把brand上一级叫ibrand,我的ibrand只写了一个,其它没写,如果要用id取ibrand怎么取?
 

"brand上一级叫ibrand"  , brand上一级 不就是 34 ,不知你说你是不是这意思

alert( arr[34].name )  


[解决办法]

引用:
Quote: 引用:

Quote: 引用:

你写的应该是了,但我现在把brand上一级叫ibrand,我的ibrand只写了一个,其它没写,如果要用id取ibrand怎么取?
 

"brand上一级叫ibrand"  , brand上一级 不就是 34 ,不知你说你是不是这意思

alert( arr[34].name )  

34是第一级,您上面例子写到的alert(arr[61].name)是brand的name=阿斯顿·马丁,而ibrand的name应该是A 阿斯顿·马丁

arr[34].name   不就是 A 阿斯顿·马丁
[解决办法]
你既然用了JSON格式的数据怎么还想着数组呢,利用下面的语句转化成对象列表,然后遍历每个对象

var list= JSON.parse(jsonString);
for(var i;i<list.length;i++)
{
  var name=list[i].name;
  ...
}

热点排行
Bad Request.