将数据形成json格式

时间:2018-12-31 10:06:05

标签: javascript jquery json forms

我有一个表单,可以通过单击加号按钮添加多个表单。在其中可以单击行旁边的加号按钮添加多个行。现在,我想将此表单数据转换为json格式。我在数组中给表单输入名称,例如

name="request[0]['testSectionHeader']"
name="request[0]['sortOrder']"

下面是我的表格

click here to see my form

因此,当我单击“保存”按钮时,它没有给我正确的结果

我即将来的结果是

{
"request[0]['testSectionHeader']":"test selection header",
"request[0]['sortOrder']":"1",
"request[0]['level2'][0]['testBlockHeader']":"asdf",
"request[0]['level2'][0]['sortOrder']":"1",
"request[0]['level2'][0]['level3'][0]['designation']":"Test Condition",
"request[0]['level2'][0]['level3'][0]['size']":"Test",
"request[0]['level2'][0]['level3'][0]['condition']":"=",
"request[0]['level2'][0]['level3'][0]['volume']":"23.6",
"request[0]['level2'][0]['level3'][0]['unit']":"C",
"request[0]['level2'][0]['level3'][0]['remark']":"U6",
"request[0]['level2'][0]['level3'][0]['interface']":"test interface1"
}

但是我需要这样

{
 "request": [

      {
           "testSectionHeader": "Section Header 1",
           "sortOrder": "1",
           "level2": [
                {
                     "testBlockHeader": "Section Header 1 Block1",
                     "sortOrder": "1",
                     "level3": [
                          {
                               "designation": "Software engineer",
                               "unit": "5",
                               "sortOrder": "1"
                          },
               {
                                "designation": "QA Manager",
                               "unit": "5",
                               "sortOrder": "2"
                          }
                     ]
                }
           ]
      },

     ]
  }

因此,如果我需要更改输入名称或任何需要更改的内容,可以帮我如何创建它。这对我来说很重要。预先感谢。

我的代码是

    $(document).ready(function(){
$('#dataform').on('submit', function(e){
    e.preventDefault();
    var data = {};
   $("#dataform").serializeArray().map(function(x){
   data[x.name] = x.value;
   }); 
   alert(JSON.stringify(data));

    });
  });

我已经在Google上检查了我的问题,并尝试使其如我所愿。但您无法检查以下代码。我不知道我的错在哪里。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您应该使用for循环来创建JSON数组,而不是使用JSON.stringify()

var _json = {}
var _requests = []
var _levels = []
    for(var i =0;i<requests.length ;i++){
        var tempRequest ;
        // tempRequest = {"sortOrder": intvalue} and bla bla bla
        //sortOrder
        //testSectionHeader
        for(var j = 0;j<levels.length;j++){
           var tempLevel;
           // tempLevel = {"size":"value"} and bla bla bla
           //designation
           //size
           //condition
           //volume
           //unit
           //remark
           //interface
           _levels.push(tempLevel)
        }
        tempRequest.levels = _levels 
        _requests.push(tempRequest)
    }
_json = JSON.stringify(_requests) //here you  got your json  

这只是一个示例,您可以根据需要进行更改
更新:

java script array length-如果您有一系列请求,则可以访问其长度arrayname.length