【发布时间】:2015-11-08 20:25:12
【问题描述】:
我有一个哈希数组。数组中的每个元素都是层次树中的一个节点,并且具有父级的参考数据。我将在树中拥有成千上万个节点...本质上必须将一组未知的节点转换为 JSON(如下所示)以用于 http://bl.ocks.org/robschmuecker/7880033
更新:position_id 是异端树中的一个节点。 Placement_id 是父节点的 position_id(邻接参照树)。
更新:这是来自 DBIx::Tree::NestedSet(自定义)修改版本的嵌套集和邻接结果的完整 AoH Data::Dumper 结果。
$VAR1 = [
{
'lft' => '673',
'id' => '109',
'date_created' => '2015-08-15',
'level' => '7',
'user_id' => '13',
'placement_id' => '11',
'position_id' => '13',
'status' => '1',
'structure_id' => '1',
'rght' => '684'
},
{
'placement_id' => '13',
'position_id' => '22',
'status' => '1',
'structure_id' => '1',
'rght' => '679',
'lft' => '674',
'date_created' => '2015-08-15',
'id' => '116',
'level' => '8',
'user_id' => '22'
},
{
'user_id' => '101',
'level' => '9',
'id' => '200',
'date_created' => '2015-08-15',
'lft' => '675',
'rght' => '676',
'structure_id' => '1',
'status' => '1',
'position_id' => '101',
'placement_id' => '22'
},
{
'date_created' => '2015-08-15',
'id' => '201',
'level' => '9',
'user_id' => '374',
'lft' => '677',
'structure_id' => '1',
'rght' => '678',
'placement_id' => '22',
'position_id' => '374',
'status' => '1'
},
{
'lft' => '680',
'user_id' => '95',
'level' => '8',
'id' => '117',
'date_created' => '2015-08-15',
'status' => '1',
'position_id' => '95',
'placement_id' => '13',
'rght' => '681',
'structure_id' => '1'
}
];
这是目标,对于这个例子,我需要结束:
{
"name": "13",
"children": [
{
"name": "22",
"children": [
{
"name": "101"
},
{
"name": "374"
}
]
},
{
"name": "95"
}
]
}
您还可以在这里看到我想要达到的格式(减去大小): http://bl.ocks.org/robschmuecker/7880033#flare.json
我失败的方法包括循环遍历哈希数组以创建递归哈希哈希,然后可以与JSON Perl module 一起使用以创建我需要的实际 JSON。
【问题讨论】:
-
如果第一个哈希值是 1 级而不是 7 级,它会是什么样子?
-
看起来是一样的。级别本身是更大树中的整体级别。所以,13 是整个树的第 7 级,但是这个组的第 1 级。
-
@melpomene 我认为这只是遥远的关系,因为该问题的解决方案需要 DATA 并创建一个哈希数组。我有一个哈希数组,我需要将其制成 HOH。
-
@Melplacement_id 是什么意思?重要吗?
标签: perl recursion data-structures tree