【发布时间】:2018-05-03 19:58:47
【问题描述】:
我有一个我正在尝试解析的 json 列表(最初是来自 TestRail API getcases 的响应)。这是一个示例 json:
[
{
"id": 1,
"parent_id": null,
},
{
"id": 2,
"parent_id": 1,
},
{
"id": 6,
"parent_id": null,
},
{
"id": 16,
"parent_id": 2,
},
{
"id": 7,
"parent_id": 1,
},
{
"id": 3,
"parent_id": 6
}
]
我想做的是找出哪些 ID 属于原始父 ID。
例如id:1 和"id": 6, 是自"parent_id": null 以来最顶层的父节点。
我想让所有子节点都属于最顶层的父节点。
在这个例子中,这里是基于parent_id的关系
1 -> [2,7] -> 16
6 -> 3
主要目标是确定顶级父节点的所有子(和子)节点是什么。我对了解子父/子关系不感兴趣。
我要解析的是得到以下输出:
{
1: [2,7,16],
6: 3
}
一种方法是使用几个嵌套的 for 循环,为每个顶级父节点检查它是否显示为 parent_id 并递归地使用它,但这看起来不是一个很好的方法。
不胜感激任何 cmets/建议
【问题讨论】:
-
读取所有节点,将它们作为连接添加到图上,然后从每个没有父节点的节点执行 bfs/dfs 以了解它可以到达的所有节点