【问题标题】:Form data into json format将数据形成json格式
【发布时间】:2018-12-31 10:06:04
【问题描述】:

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

    });
  });

我已经在谷歌上检查了我的问题,并尝试按照我想要的方式进行操作。但不可能你可以检查我的下面的代码。我不知道我的错在哪里。

有没有人可以帮助我?

【问题讨论】:

  • 不,我已经检查了这个链接但我没有任何解决方案,你可以检查我的代码。
  • 这是一个操作数据的简单案例。没有魔法可以将你的数组变成一个随机对象,你只需要自己编写代码。试试看,真的不是很困难。这是starting point
  • 我尝试了很多次,但都没有达到我想要的效果。你能帮我么??我需要在我的代码中更改什么??

标签: javascript jquery json forms


【解决方案1】:

您应该使用 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

【讨论】:

  • 感谢您的回复。让我试试吧
  • 你能解释一下吗?像 requests.length 我怎样才能得到它??
  • 其实我是 jquery 的新手,所以
  • 它是纯 JavaScript,我没有在我的代码中使用任何 JQuery,我更新了我的答案,它非常简单,你有两个数组请求和级别,你需要从它们创建一个 json,据我所知您需要请求中的级别,您需要 1 个 for 循环请求,另一个循环遍历级别并将它们添加到请求中,然后将请求数组设为 json
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多