我有以下变量(从JSON对象解析)
testdata = {
"file_data"=>[
{"id"=>"idvalue","desc"=>[
{"key"=>"value"}
]}
]
}
只有一个filedata,但它不是以哈希开头,而是将哈希包含在一个数组中。但是这种疯狂并没有结束:desc键应该包含一个哈希,而是包含一个包含哈希的单对象数组。
因此要获取任何数据,我必须编写类似
的内容puts testdata["file_data"][0]["desc"][0]["key"]
对于这种多余的嵌套,我该怎么办?
答案 0 :(得分:1)
您可以这样做:
def clean h
Hash[h.map{|k,v|
[k,
case v
when Hash then clean(v)
when Array then clean(v.first)
else v
end
]
}]
end
clean testdata
#=> {"file_data"=>{"id"=>"idvalue", "desc"=>{"key"=>"value"}}}