Com este Hash:
{ "blog_namespace" : { "key" : "blog_post_1234",
"notice" : "Read the new blog post!" } }
Qual é a maneira mais rápida de traduzir para o Hash:
{ "blog_post_1234" : "Read the new blog post!" }
?
Eu sempre vejo pessoas usando combinações inteligentes de map
e merge
etc, mas não consigo entender uma maneira de fazer isso sem aninhar dois loops.
Respostas:
8 para resposta № 1Esses hashes parecem ser objetos JSON. Se estiverem, use um Analisador JSON para transformá-los em rubis.
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!"}
2 para resposta № 2
Este não era um hash Ruby válido. Mas, considerando as suposições de que ele é (ou você o analisará em um) e que a chave sempre será "blog_namespace"
, você pode fazer o seguinte:
>> Hash[[h["blog_namespace"].values]]
#=> {"blog_post_1234"=>"Read the new blog post!"}