JS中怎么将JSON字符串装换成二维数组


目前遇到点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']
             ];

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

7 个解决方案

#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 楼  的回复:
JScript code
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',……

代码好像有问题啊,运行出来的结果是不对的

#5


引用 3 楼  的回复:
JScript code
function json2Array(jsonData) {
    var jsonsString = jsonData.slice(1, jsonData.length - 1);
    var jsonStrings = jsonsString.split("},");
    var length = jsonStrings.length;
    var……

哈哈、、、谢谢,代码运行成功,就是我想要的效果

#6


唉,我和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);

#7


引用 6 楼  的回复:
唉,我和1楼的都是将jsonData直接当成是json格式的数据来处理的,你原本的是字符串,eval(jsonData)下就是了

    JScript code
var jsonData = "[{id:'0', name:'工厂',size:13,parentID:''},{id:'1', name:'分销A',size:13,parentID:'0'},{id:'2', name:……

OK,多谢各位,问题已解决

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: