2014-04-30 248 views
1

在下面的代码中,我试图填充javascript类,这样我得到一个对象,我可以将其串化为json字符串。 如何将javascript中的嵌套数组转换为json结构

 function classValue(valuearrs) { 
     for (var i = 0; i < valuearrs.length; i++) { 
      for (j = 0; j < valuearrs[i].length; j++) { 

       this.id = valuearrs[i][j]; 
       this.name = valuearrs[i][j]; 
       this.somekey = valuearrs[i][j]; 
      } 
     } 
    } 


    function CreatenestedarrObj(valuearr) { 

     this.Arrayparameters = [new classValue (valuearr)]; 
    } 

    function ArrayMethodCall() { 

     var valuearr = new Array(); 
     valuearr[0] = "myval1"; 
     valuearr[1] = "myval2"; 
     valuearr[2] = "myval3"; 
     var valuearr1 = new Array(); 
     valuearr1[0] = "myval11"; 
     valuearr1[1] = "myval12"; 
     valuearr1[2] = "myval13"; 
     nestedarr = new Array(); 
     nestedarr[0] = valuearr; 
     nestedarr[1] = valuearr1; 

     var x = new CreatenestedarrObj(nestedarr); 
     var strobject = JSON.stringify(x); 
     alert(strobject); 
    } 

    </script> 
    </head> <body> MethodCall: <input type="button" value="Call Method" onclick=" ArrayMethodCall()" /> 

字符串化的预期值之后是。{ArrayParameters:[{myval1,myval2,myval3},{myval1,myval12,myval13}]}的事我能想到的我缺少的是,在每次创建新对象在循环中但如何?或者我可能完全错误。任何帮助将不胜感激。

回答

2

更改此:

function classValue(valuearrs) { 
     var arr=[] 
      for (var i = 0; i < valuearrs.length; i++) { 
       arr[i]={}; 
      for (j = 0; j < valuearrs[i].length; j++) { 

       arr[i].id = valuearrs[i][j]; 
       arr[i].name = valuearrs[i][j]; 
       arr[i].somekey = valuearrs[i][j]; 
      } 
     } 
      return arr; 
    } 
+0

It Works ... Thums Up !!谢谢:) – shivi

4

试试这个

function classValue(valuearrs) { 
     var arr = [] 
     for (var i = 0; i < valuearrs.length; i++) { 
      for (j = 0; j < valuearrs[i].length; j++) { 
       var temp = new Object(); 
       temp.id = valuearrs[i][j]; 
       temp.name = valuearrs[i][j]; 
       temp.somekey = valuearrs[i][j]; 
       arr[j] = temp; 
      } 
     } 
     return arr; 
    } 
+0

它像一个魅力。做了我的一天..谢谢你这么多:) – shivi

0

我不知道为什么你需要拆分nestedarridnamesomekey ,但如果你不需要,只需返回valuearrs即可:您将会收到罚款:

function classValue(valuearrs) { 
    return valuearrs; 
    } 


    function CreatenestedarrObj(valuearr) { 

     this.Arrayparameters = [new classValue (valuearr)]; 
    } 

    function ArrayMethodCall() { 

     var valuearr = new Array(); 
     valuearr[0] = "myval1"; 
     valuearr[1] = "myval2"; 
     valuearr[2] = "myval3"; 
     var valuearr1 = new Array(); 
     valuearr1[0] = "myval11"; 
     valuearr1[1] = "myval12"; 
     valuearr1[2] = "myval13"; 
     nestedarr = new Array(); 
     nestedarr[0] = valuearr; 
     nestedarr[1] = valuearr1; 

     var x = new CreatenestedarrObj(nestedarr); 
     var strobject = JSON.stringify(x); 
     console.info(strobject); 
    } 

输出

{"Arrayparameters":[[["myval1","myval2","myval3"],["myval11","myval12","myval13"]]]} 

或更好的,如果你不希望它作为Arrayparameters,你可以用下面的代码

var strobject = JSON.stringify(nestedarr); 

,输出会是这样:

[["myval1","myval2","myval3"],["myval11","myval12","myval13"]] 
+0

得到了答案。合成在Json字符串数组对象元素将在{}。谢谢回复。 – shivi

相关问题