我有一個散列數組。數組中的每個元素都是分層樹中的一個節點,並且具有父代身份的參考數據。我將在樹中有成千上萬的節點......基本上,一組未知的節點必須轉換爲JSON(如下所示),以便與http://bl.ocks.org/robschmuecker/7880033將平面數據結構轉換爲樹
一起使用更新:position_id是異端樹中的節點。 placement_id是父級的position_id(鄰接參考樹)。
更新:下面是完整的AoH Data :: Dumper結果,其中嵌套集和鄰接結果來自DBIx::Tree::NestedSet(自定義)的修改版本。
$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。
可能相關:http://stackoverflow.com/questions/31108400/perl-two-column-flat-file-to-a-complex-unordered-list-tree – melpomene
如果第一個哈希有1級而不是7級,它會是什麼樣子? –
它看起來是一樣的。關卡本身就是更大樹內的整體關卡。所以,13是整個樹的第7層,但是這個組的第1層。 – RedSands