简体   繁体   English

JSON 结果格式带JS

[英]JSON result format with JS

I have an input form like this:我有一个这样的输入表单:

 <div class="form-group">
            <label class="text-info">name</label>
            <input type="text" id="name" class="form-control" />
 </div>

and a basic script like below:和一个如下的基本脚本:

$(document).ready(function () {
        $("#postform").submit(function (e) {
            e.preventDefault();
            var data = {
                name: $("#name").val().trim(),
                requestID: $("#requestID").val().trim(),
                label: $("#label").val().trim(),
                contractTypeID: $("#contractTypeID").val().trim(),
                contractID: $("#contractID").val().trim(),                
            }
            console.log('{"ABC":' + JSON.stringify(data) + '}')
               ....

        })
    })

The results JSON with following:结果 JSON 如下:

{
    "name": "Demo",
    "REQID": "1234aa",
    "label": "123",
    "contractTypeID": "321",
    "contractID": "1234",
}

But, I need result to be formatted like this:但是,我需要将结果格式化为:

{
   "ABC":{
      "name":"Demo",
      "REQID":"1234aa",
      "Group":{
         "label":"123",
         "contractTypeID":"321",
         "contractID":"1234"
      }
   }
}

Is there a simple way to accomplish this or I will need to hardcode result?有没有一种简单的方法可以实现这一点,或者我需要对结果进行硬编码?

If you're using the arbitrary key "ABC" as per your example, you can just wrap your data structure into that pre-defined parent object:如果您根据示例使用任意键"ABC" ,则可以将data结构包装到预定义的父 object 中:

 var data = { "name": "Demo", "REQID": "1234aa", "label": "123", "contractTypeID": "321", "contractID": "1234", }; var modifiedData = { "ABC": { "name": data.name, "REQID": data.REQID, "Group": { "label": data.label, "contractTypeID": data.contractTypeID, "contractID": data.contractID } } }; console.log(modifiedData);

Try尝试

var data = { 
  ABC: {
    name: $("#name").val().trim(),
    REQID: $("#requestID").val().trim(),
    Group: {
      label: $("#label").val().trim(),
      contractTypeID: $("#contractTypeID").val().trim(),
      contractID: $("#contractID").val().trim(),                
    }
  }
}

console.log(JSON.stringify(data))

There are a few ways to do this.有几种方法可以做到这一点。 Another way is to build up your javascript object in stages like this:另一种方法是分阶段构建您的 javascript object:

var data = { ABC: { Group: {}}};
data.ABC.name = 'Demo';
data.ABC.REQID = '1234aa';
data.ABC.Group.label = '123';
data.ABC.Group.contractTypeID = '321';
data.ABC.Group.contractID = '1234';

console.log(JSON.stringify(data));

Just remember that javascript objects do not support order like javascript arrays do, so it won't look exactly how you specified it but this does produce the object you specified.请记住,javascript 对象不支持像 javascript arrays 那样的顺序,所以它看起来与您指定的方式不完全相同,但这确实会产生 ZA666CFDE63191B4BEB62AC68CFDE63191C4BEB62。

Here's a working fiddle .这是一个工作小提琴

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM