带有JS的JSON结果格式



我有一个这样的输入表单:

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

和下面这样的基本脚本:

$(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) + '}')
....
})
})

结果JSON包含以下内容:

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

但是,我需要这样格式化结果:

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

有没有一种简单的方法可以实现这一点,或者我需要对结果进行硬编码?

如果按照示例使用任意键"ABC",则可以将data结构封装到预定义的父对象中:

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

尝试

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))

有几种方法可以做到这一点。另一种方法是分阶段构建javascript对象,如下所示:

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

请记住,javascript对象不像javascript数组那样支持顺序,因此它不会看起来与您指定的完全一样,但这确实会生成您指定的对象。

这是一把正在工作的小提琴。

最新更新