昨天问了关于以下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"}}}}}}}

解决方案 »

  1.   

    你说的是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>
      

  2.   

    方式一:用jquery的转换方法:
    var json = $.parseJSON(carData);
    方式二:用json2.js来转换:
    var json = JSON.parse(carData);//转化成json对象
    var jsonStr = JSON.stringify(json);//json对象转化成字符串
      

  3.   

    我就是想把json转成相应的多维数组,然后我就可以知道brand下有多少个pseries,多少个model,值是什么
      

  4.   

    你要的是这结果?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 )
      

  5.   

    想得到以下形式:里面有些数好像写的不对,但就是这个意思ibrand['0']='34:A 阿斯顿·马丁
    brand['34']='266:A 阿斯顿·马丁DB9,582:A 阿斯顿·马丁DBS,923:R Rapide,822:V V12 Vantage,2846:V V12 Zagato,385:V V8 Vantage,386:V Vanquish,2275:V Virage';
    ...之后层次
      

  6.   

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

  7.   

    "brand上一级叫ibrand"  , brand上一级 不就是 34 ,不知你说你是不是这意思alert( arr[34].name )  
      

  8.   

    "brand上一级叫ibrand"  , brand上一级 不就是 34 ,不知你说你是不是这意思alert( arr[34].name )  
    34是第一级,您上面例子写到的alert(arr[61].name)是brand的name=阿斯顿·马丁,而ibrand的name应该是A 阿斯顿·马丁
      

  9.   

    "brand上一级叫ibrand"  , brand上一级 不就是 34 ,不知你说你是不是这意思alert( arr[34].name )  
    34是第一级,您上面例子写到的alert(arr[61].name)是brand的name=阿斯顿·马丁,而ibrand的name应该是A 阿斯顿·马丁
    arr[34].name   不就是 A 阿斯顿·马丁
      

  10.   

    你既然用了JSON格式的数据怎么还想着数组呢,利用下面的语句转化成对象列表,然后遍历每个对象var list= JSON.parse(jsonString);
    for(var i;i<list.length;i++)
    {
      var name=list[i].name;
      ...
    }