'1', "groups" =>{ "group" =>[ {"id-6ren">
gpt4 book ai didi

ruby-on-rails - Rails 哈希树到数组

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:20 27 4
gpt4 key购买 nike

我正在尝试解析一个大型 XML 文件。我正在使用 Saxerator。

我的散列有一种树:

obj= {
"id"=>'1', "groups" =>{
"group" =>[
{"id"=>"2", "groups"=>{}},
{"id"=>"3", "groups"=>{}},
{"id"=>"4", "groups"=>{
"group"=>[
{"id"=>"5", "groups"=>{}},
{"id"=>"6", "groups"=>{}},
]}}
]}}

我事先不知道树的深度。我有一个问题。我不知道如何将它转换为数组。结果应该是这样的:

[{"id"=> "1", "parent_id"=> "0"},
{"id"=> "2", "parent_id"=> "1"},
{"id"=> "3", "parent_id"=> "1"},
{"id"=> "4", "parent_id"=> "1"},
{"id"=> "5", "parent_id"=> "4"},
{"id"=> "6", "parent_id"=> "4"}]

有什么想法吗?

最佳答案

您正在寻找一个非常简单的递归函数,它使树线性化,但也跟踪父级:

def tree_to_a(tree, p = 0)
id = tree["id"]
(tree["groups"]["group"] || [])
.flat_map { |sub| tree_to_a(sub, id) }
.unshift("id" => id, "parent_id" => p)
end

关于ruby-on-rails - Rails 哈希树到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23992307/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com