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 联系我们: