Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态创建嵌套的JSON对象_Javascript_Jquery_Asp.net Mvc 3 - Fatal编程技术网

Javascript 动态创建嵌套的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

(上下文)我从收集到JSON对象的一组元素中获取信息,然后将这些信息传递到MVC3控制器,在MVC3控制器中反序列化为对象

有“项目”和“项目设置”。目前,我有两个项目和项目设置都在平面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”)下。每个函数都是添加设置的位置。我尝试过类似“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);
    
}