有了这个哈希:
{ "blog_namespace" : { "key" : "blog_post_1234",
"notice" : "Read the new blog post!" } }
将其转化为哈希的最快捷方式是什么:
{ "blog_post_1234" : "Read the new blog post!" }
我总是看到人们使用map
和merge
等聪明的组合,但是如果不将两个循环嵌套在一起,就无法完全理解这一点。
答案 0 :(得分:8)
这些哈希值似乎是JSON对象。如果是,请使用JSON parser将它们转换为红宝石哈希值。
hash = {"blog_namespace" => {"key" => "blog_post_1234",
"notice" => "Read the new blog post!"}}
Hash[hash.map {|k, v| [v["key"], v["notice"]] }]
# => {"blog_post_1234" => "Read the new blog post!"}
答案 1 :(得分:2)
这不是有效的Ruby哈希。但是考虑到它的假设(或者你将它解析成一个)并且密钥总是"blog_namespace"
,你可以执行以下操作:
>> Hash[[h["blog_namespace"].values]]
#=> {"blog_post_1234"=>"Read the new blog post!"}