2016-06-25 11 views
-1

便宜上、いくつかのJSONデータを別の形式に再構成したいと考えています。サーバーから取得する形式は私にとっては不便です。すべてのアイテムは1つのノードにありますが、その中にはそのアイテムの親を示すparent: idがあります。Javascript:JSON構造を変更する方法(JSONオブジェクトのすべてのノードをトラバースする)

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" 
       }] 
     } 
] 
+0

あなたの質問 – bhspencer

+0

角度に基づいて自分のアプリケーションにはangularjsはありません。多分助けてくれるでしょう – lemmik1221

+1

これはコード作成サービスではありません... 'javascript recursive tree'を探してみてください – charlietfl

答えて

1

私は単純に、階層オブジェクト構造にデータを収集して、文字列化したい:

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)); 
関連する問題