2017-12-09 8 views
-2

moduleIdとparentIdを含むJSONデータがあります。モジュールの親子のマップ構造を持つ新しいJSONが必要です。親子ツリーの作成JSON

** parentIdはnullにすることができます。つまり、モジュールには親がありません。

現在JSON-

[{ 
    "moduleId": 1, 
    "parentId": null  
}, 
{ 
    "moduleId": 2, 
    "parentId": 1 
}, 
{ 
    "moduleId": 3, 
    "parentId": 1 
}, 
{ 
    "moduleId": 4, 
    "parentId": null  
}, 
{ 
    "moduleId": 5, 
    "parentId": null  
}, 
{ 
    "moduleId": 6, 
    "parentId": 3 
} 
] 

必要JSON-

[{ 
    "moduleId": 1, 
    "child": [{ 
       "moduleId": 2, 
       "child": [] 
       }, 
       { 
       "moduleId": 3, 
       "child":[{ 
          "moduleId": 6, 
          "child": [] 
         }] 
       }]  
}, 
{ 
    "moduleId": 4, 
    "child": [] 
}, 
{ 
    "moduleId": 5, 
    "child": [] 
} 
] 

現在のコード

問題 - 子供の内部の子供たちは、マップされたばかりされていない

function tree($list) 
{ 
    $map = new stdClass(); 
    $roots = [];$node = []; 

    for($i=0; $i<sizeof($list); $i++) 
    { 
     $c=$list[$i]["moduleId"]; 
     $map->$c = $i; 

     $list[$i]["children"] = []; // initialize the children 
    } 

    for($i=0; $i<sizeof($list); $i++) 
    { 
     $node = $list[$i]; 
     if($node["parentId"] !== "") 
     { 
      $m = $node["parentId"]; 
      $val = $map->$m; 

      $child = new StdClass; 
      $child->moduleId = $node["moduleId"]; 
      $child->parentId = $node["parentId"]; 
      $child->children = []; 

      array_push($list[$val]["children"],$node); 

     } 
    } 

for($i = 0;$i<sizeof($list);$i++) 
    { 
     if($list[$i]["parentId"] == "") 
     { 
      array_push($roots, $list[$i]); 
     } 
    } 
    return json_encode($roots); 
} 

私はそれを理解カントでる。ここでのすべての答えは、さまざまな種類の結果をもたらします。 任意の言語(java、C、php、js、pythonなど)を使用できます。ありがとうございました。あなたが投稿し

+0

は – YvesLeBorg

+0

が、私が追加した@YvesLeBorgも** [MCVE]として知られている** '必要なcode' **、(https://stackoverflow.com/help/mcve)**が欠落しています私の現在のコード。問題もある。助けてください – RonnyRules

答えて

1
var arry = [{ 
    "parentId": null, 
    "moduleId": 1 

}, 
{ 
    "parentId": 1, 
    "moduleId": 2 

}, 
{ 
    "parentId": 1, 

    "moduleId": 3 

}, 
{ 
    "parentId": null, 
    "moduleId": 4 

}, 
{ 
    "parentId": null, 
    "moduleId": 5 
}, 
{ 

    "parentId": 3, 
    "moduleId": 6 
} 
]; 

function convert(array){ 
    var map = {}; 
    for(var i = 0; i < array.length; i++){ 
     var obj = array[i]; 
     obj.children= []; 

     map[obj.moduleId] = obj; 

     var parent = obj.parentId || '-'; 
     if(!map[parent]){ 
      map[parent] = { 
       children: [] 
      }; 
     } 
     map[parent].children.push(obj); 
    } 
    return map['-'].children; 
} 

var r = convert(arry) 
console.log('array', r); 
console.log('result', JSON.stringify(r)) 
関連する問題