Javascript 动态创建嵌套的JSON对象
(上下文)我从收集到JSON对象的一组元素中获取信息,然后将这些信息传递到MVC3控制器,在MVC3控制器中反序列化为对象 有“项目”和“项目设置”。目前,我有两个项目和项目设置都在平面JSON对象中。理想情况下,我希望在每个项目下嵌套项目设置。我的代码当前如下所示:Javascript 动态创建嵌套的JSON对象,javascript,jquery,asp.net-mvc-3,Javascript,Jquery,Asp.net Mvc 3,(上下文)我从收集到JSON对象的一组元素中获取信息,然后将这些信息传递到MVC3控制器,在MVC3控制器中反序列化为对象 有“项目”和“项目设置”。目前,我有两个项目和项目设置都在平面JSON对象中。理想情况下,我希望在每个项目下嵌套项目设置。我的代码当前如下所示: var editeditems=[]; ... $("#SaveChanges").click(function() { //this works and retrieves all
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”)下。每个函数都是添加设置的位置。我尝试过类似“editems.settings.push..”的语法,但返回时出现语法错误
任何帮助都将不胜感激
var ei = {'settings': [3]};
ei.settings.push(4);
console.log(ei);
// This will output an object with property settings and value an array with values (3 and 4)
将生成示例输出:
var editeditems =
[
{
"itemname": "item1",
"settings": [
{
"settingkey": "key1",
"settingvalue": "value1"
},
{
"settingkey": "key2",
"settingvalue": "value2"
}
]
},
{
"itemname": "item2",
"settings": [
{
"settingkey": "key1",
"settingvalue": "value3"
},
{
"settingkey": "key2",
"settingvalue": "value4"
}
]
}
];
您需要创建平面数据数组json,如下所示:
[{"itemname": "item1","settingkey": "key1","settingvalue": "value1"},
{"itemname": "item2","settingkey": "key2","settingvalue": "value2"},];
然后像这样处理上述日期
var keys = Object.keys(dataMap);
var json = [];
for (var key in keys) {
var innerJson = {};
innerJson["name"] = keys[key];
var innerMap = dataMap[keys[key]];
if (innerMap instanceof Array) {
innerJson["size"] = innerMap[0];
} else if (innerMap instanceof Object) {
var child = processHirarchiachalData(innerMap);
innerJson["children"] = child;
}
json.push(innerJson);
}
var keys = Object.keys(dataMap);
var json = [];
for (var key in keys) {
var innerJson = {};
innerJson["name"] = keys[key];
var innerMap = dataMap[keys[key]];
if (innerMap instanceof Array) {
innerJson["size"] = innerMap[0];
} else if (innerMap instanceof Object) {
var child = processHirarchiachalData(innerMap);
innerJson["children"] = child;
}
json.push(innerJson);
}