Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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结构(遍历JSON对象的所有节点)_Javascript_Json - Fatal编程技术网

Javascript:如何更改JSON结构(遍历JSON对象的所有节点)

Javascript:如何更改JSON结构(遍历JSON对象的所有节点),javascript,json,Javascript,Json,为了方便起见,我想将一些JSON数据重新构造成不同的格式。从服务器获取的格式对我来说很不方便;所有项目都在一个节点中,但其中一些项目有parent:id,它告诉我们该项目的父项 我想从JsonFromSrver中获取JSON结构,并将其重新构造为resultJson。我还需要能够在修改后以原始格式将数据发送回服务器 var JsonFromSrver = [ { "id": 1, "type": "folder",

为了方便起见,我想将一些JSON数据重新构造成不同的格式。从服务器获取的格式对我来说很不方便;所有项目都在一个节点中,但其中一些项目有
parent:id
,它告诉我们该项目的父项

我想从
JsonFromSrver
中获取JSON结构,并将其重新构造为
resultJson
。我还需要能够在修改后以原始格式将数据发送回服务器

var JsonFromSrver = [
        {
            "id": 1,
            "type": "folder",
            "title": "HeadItem1",
        },
        {
            "id": 2,
            "type": "folder",
            "title": "HeadItem2",
        },
        {
            "id": 33,
            "parent": 1,
            "type": "file",
            "title": "ChildItem",

        },
        {
            "id": 103,
            "parent": 2,
            "type": "file",
            "title": "ChildItem"
        }
]

var resultJson = [
        {
            "id": 1,
            "type": "folder",
            "title": "HeadItem1",
            "children": 
               [{
                  "id": 33,
                  "parent": 1,
                  "type": "file",
                  "title": "ChildItem"
              }]
        },
        {
            "id": 2,
            "type": "folder",
            "title": "HeadItem2",
            "children": 
               [{
                  "id": 103,
                  "parent": 2,
                  "type": "file",
                  "title": "ChildItem"
              }]
        }
]

我只需将数据收集到分层对象结构中,然后进行字符串化:

var result = {};

for (var j in JsonFromSrver) {
    var obj = JsonFromSrver[j];
    if (!obj.parent) {
        result[obj.id] = obj;
        continue;
    }
    var parentObj = result[obj.parent];
    if (!parentObj.children) parentObj.children = [];   
    parentObj.children.push(obj);   
}

resultJson = [];
for (var i in result) {
    resultJson.push(result[i]);
}


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

你的问题中没有angularjs我的应用程序基于angularjs。也许它有帮助这不是一个代码编写服务。。。尝试搜索
javascript递归树
ok。谢谢我只需要几行代码,这是为每个家长收集所有孩子的最快方式。“我只需要几行代码”。。。把它们放在一起,当你对真正的代码有问题的时候,问问题