目前遇到点js的问题,就是需要根据后台传回的json字符串组合成一个二维数组供组件使用,类似于这样的json字符串:
var jsonData = "[{id:'0', name:'工厂',size:13,parentID:''},{id:'1', name:'分销A',size:13,parentID:'0'},{id:'2', name:'分销B',size:13,parentID:'0'}]";
需要转成:
var source = [['ID','name','size','parentID'],
              ['0','工厂',13,''],
              ['1','分销站A',13,'0'],    
              ['2','分销站B',13,'0']
             ];

请教如何转换,麻烦各位帮忙解决一下

解决方案 »

  1.   

    var jsonData = [{id:'0', name:'工厂',size:13,parentID:''},{id:'1', name:'分销A',size:13,parentID:'0'},{id:'2', name:'分销B',size:13,parentID:'0'}];
    var source = [];
    source[0] = ['ID', 'name', 'size', 'parentID'];
    for (var i = 0, j = jsonData.length; i < j; i++)
        source[i + 1] = [jsonData[i].id, jsonData[i].name, jsonData[i].size, jsonData[i].parentID];alert(source.join('|'))
      

  2.   

    汗,你是要字符串。搞得我先转了数组了。    var jsonData = [{id:'0', name:'工厂',size:13,parentID:''},{id:'1', name:'分销A',size:13,parentID:'0'},{id:'2', name:'分销B',size:13,parentID:'0'}];
        var arr1="['ID','name','size','parentID']";
        var arr2='[';
        for(i=0;i<jsonData.length;i++){
            var temp="['{0}','{1}','{2}','{3}']";
            arr2+=temp.replace("{0}",jsonData[i].id).replace("{1}",jsonData[i].size).replace("{2}",jsonData[i].name).replace("{3}",jsonData[i].parentID)
        }
        arr2+=']'
        var source =[arr1,arr2];
        alert(source);
      

  3.   

    function json2Array(jsonData) {
    var jsonsString = jsonData.slice(1, jsonData.length - 1);
    var jsonStrings = jsonsString.split("},");
    var length = jsonStrings.length;
    var jsons = [];
    for (var i = 0; i != length-1; ++i) {
    jsonStrings[i] += '}';
    }
    var source = [[]];
    for (var i = 0; i != length; ++i) {
    jsons[i] = eval('(' + jsonStrings[i] + ')');
    var data = [];
    for(var key in jsons[i]) {
    if(i == 0) {
    source[0].push(key);
    }
    data.push(jsons[i][key]);
    }
    source.push(data);
    }
    return source;
    }
    这样应该是可以的,你试一下,应该还有更好的方法,求指教,相互学习
      

  4.   

    唉,我和1楼的都是将jsonData直接当成是json格式的数据来处理的,你原本的是字符串,eval(jsonData)下就是了    var jsonData = "[{id:'0', name:'工厂',size:13,parentID:''},{id:'1', name:'分销A',size:13,parentID:'0'},{id:'2', name:'分销B',size:13,parentID:'0'}]";
        var json=eval(jsonData);
        var arr1="['ID','name','size','parentID']";
        var arr2='[';
        for(i=0;i<json.length;i++){
            var temp="['{0}','{1}','{2}','{3}']";
            arr2+=temp.replace("{0}",json[i].id).replace("{1}",json[i].size).replace("{2}",json[i].name).replace("{3}",json[i].parentID)
        }
        arr2+=']'
        var source ='['+arr1+','+arr2+']';
        alert(source);