我有一个类似结构的JSON响应树
{
"id":""
"node": [
{
"id":""
"node": [
{
"id":""
"node":[]
}
]
}
]
}
我怎样才能获得最后一个id值,它只是一个例子,它可能包含n个循环。
答案 0 :(得分:3)
h = {
"id" => "1",
"node" => [
{
"id" => "2",
"node" => [
{
"id" => "3",
"node" => []
}
]
}
]
}
▶ λ = ->(h) { h['node'].empty? ? h['id'] : λ.(h['node'].last) }
#⇒ #<Proc:0x00000002f4b490@(pry):130 (lambda)>
▶ λ.(h)
#⇒ "3"
答案 1 :(得分:0)
也许这种方法会对你有所帮助。您可以使用子哈希调用recursion方法。
h = {
"id" => "1",
"node" => [
{
"id" => "2",
"node" => [
{
"id" => "3",
"node" => []
}
]
}
]
}
def get_last_node(h)
if Array === h['node'] && !h['node'].empty?
h['node'].each do |node_h|
id = send(__callee__, node_h)
return id if id
end
nil
else
h['id']
end
end
get_last_node(h)
# => 3
答案 2 :(得分:0)
与@ mudasobwa的回答类似:
def get_last_node(h)
h["node"].empty? ? h["id"] : get_last_node(h["node"].first)
end
get_last_node(h)
#=> 3