Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数据格式化为json格式_Javascript_Jquery_Json_Forms - Fatal编程技术网

Javascript 将数据格式化为json格式

Javascript 将数据格式化为json格式,javascript,jquery,json,forms,Javascript,Jquery,Json,Forms,我有一个表单,我可以通过点击加号按钮来添加多个表单。在这个表单中,我可以通过点击行旁边的加号按钮来添加多行。现在我想把这个表单数据转换成json格式。我以数组形式给出表单输入名称,如下所示 name="request[0]['testSectionHeader']" name="request[0]['sortOrder']" 下面是我的表格 所以当我点击保存按钮时,它并没有给我正确的结果 我接下来的结果是 { "request[0]['testSectionHeader']":"test

我有一个表单,我可以通过点击加号按钮来添加多个表单。在这个表单中,我可以通过点击行旁边的加号按钮来添加多行。现在我想把这个表单数据转换成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));

    });
  });
我已经在谷歌上查询了我的问题,并试图让它成为我想要的。但不可能,你可以检查我下面的代码。我不知道哪里是我的错


有人可以帮我吗?

您应该使用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  
var\u json={}
var\u请求=[]
变量_级别=[]

对于(var i=0;i………..可能是重复的否,我已经检查了此链接,但我没有任何解决方案,您可以检查我的代码。这是一个简单的操作数据的情况。没有神奇的调用会将您的数组变成随机对象,您只需自己编写代码。尝试一下,这真的不是很难。以下是a我试了很多次,但我没有得到我想要的。你能帮我吗?我需要在代码中更改什么?谢谢你的回复。让我这样尝试。你能解释更多吗?比如requests.length我怎么能得到它?实际上我是jquery新手,所以它是纯JavaScript的,我没有在代码中使用任何jquery,我更新了我的答案,它很简单你有两个数组请求和级别,你需要从它们创建一个json,据我所知,在请求内部需要级别,你需要1个用于循环请求,另一个用于循环级别并将它们添加到请求中,然后使请求数组成为json