首页 > 解决方案 > 将数据形成json格式

问题描述

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

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

下面是我的表格,

点击这里查看我的表格

所以当我点击保存按钮时,它没有给我正确的结果

我即将到来的结果是

{
"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));

    });
  });

我已经在谷歌上检查了我的问题并尝试让它像我想要的那样。但不可能你可以检查我的下面的代码。我不知道我的错在哪里。

有没有人可以帮助我?

标签: javascriptjqueryjsonforms

解决方案


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

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脚本数组长度- 如果你有一个请求数组,你可以访问它的长度arrayname.length


推荐阅读