簡體   English   中英

如何將JavaScript中的嵌套數組轉換為json結構

[英]How to convert a nested array in javascript to json structure

在下面的代碼中,我試圖填充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}]}}。我可以認為我缺少的東西是每次在循環中創建一個新對象,但是如何? 否則我可能完全錯了。任何幫助將不勝感激。

嘗試這個

    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;
  }

更改此:

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;
  }

我不知道為什么需要將nestedarr拆分為idnamesomekey但是如果不需要,只需返回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 ,則可以Arrayparameters ,或者可以使用以下代碼

var strobject = JSON.stringify(nestedarr);

和輸出將是這樣的:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM