【发布时间】:2018-05-23 13:18:17
【问题描述】:
我有一个包含 moduleId 和 parentId 的 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等)。谢谢。
【问题讨论】:
-
您的帖子缺少
Required code,也称为 MCVE -
@YvesLeBorg 我已经添加了我当前的代码。并且也给出了问题。请帮忙
标签: javascript java php python json