(上下文)我从一堆元素中获取信息,这些信息正在收集到一个 JSON 对象中,然后传递到 MVC3 Controller ,在那里它被反序列化为一个对象。
有“项目”和“项目设置”。目前,我的项目和项目设置都在平面 JSON 对象中。理想情况下,我希望将项目设置嵌套在每个项目下。我的代码目前看起来像这样:
var editeditems=[];
...
$("#SaveChanges").click(function() {
//this works and retrieves all of the item IDs
$(".portlet").each(function() {
var itemname = $(this).data("itemname");
editeditems.push(
{
"itemname": itemname
});
itemname = $(this).data("itemname");
$(".settingInput").each(function() {
editeditems.push(
{
"settingkey":$(this).attr("name"),
"settingvalue":$(this).attr("value")
});
});
});
在 $(".settingInput").each 函数下是添加设置的地方。我尝试过类似“editedItems.settings.push..”的语法,但它返回语法错误。
如有任何帮助,我们将不胜感激!
最佳答案
var editeditems = [];
...
$('#SaveChanges').click(function() {
$('.portlet').each(function() {
var settings = [];
$('.settingInput').each(function() {
settings.push({
settingkey: $(this).attr('name'),
settingvalue: $(this).attr('value')
});
});
editeditems.push({
itemname: $(this).data('itemname'),
settings: settings
});
});
...
});
将生成示例输出:
var editeditems =
[
{
"itemname": "item1",
"settings": [
{
"settingkey": "key1",
"settingvalue": "value1"
},
{
"settingkey": "key2",
"settingvalue": "value2"
}
]
},
{
"itemname": "item2",
"settings": [
{
"settingkey": "key1",
"settingvalue": "value3"
},
{
"settingkey": "key2",
"settingvalue": "value4"
}
]
}
];
关于javascript - 动态创建嵌套的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10485014/