ruby访问哈希值

时间:2015-04-14 09:45:55

标签: ruby-on-rails ruby

我有一个名为activities的ruby数组,其中包含以下数据:

   {
    "activity"=>
      {
        "data"=>{}, 
        "name"=>"password_update", 
        "created_at"=>"2015-04-13T06:22:44Z"}
      } 

   {
    "activity"=>
      {
        "data"=>{}, 
        "name"=>"password_update", 
        "created_at"=>"2015-04-13T06:22:44Z"
      }
   }

如何仅提取名称键的值?

我想为每个活动提取“password_update”值...如果这有意义的话?

1 个答案:

答案 0 :(得分:4)

正如你所说的“数组”,它根本无效......它看起来像一个哈希结构,具有相同的命名键! (哈希只能包含一个唯一的键和值,否则键的值会被覆盖......我们可以假设你有这样的事情:

activities = [
  {
    "activity"=>
      {
        "data"=>{}, 
        "name"=>"password_update_1", 
        "created_at"=>"2015-04-13T06:22:44Z"}
      }
   },
   {
    "activity"=>
      {
        "data"=>{}, 
        "name"=>"password_update_2", 
        "created_at"=>"2015-04-13T06:22:44Z"
      }
   }]

这看起来像一个哈希数组,现在你想从每个对象中获取“名称”,你可以简单地使用map函数(从块结果创建一个数组)和hash []访问器。

names = activites.map { |v| v['activity']['name'] }
# The result:
# names = [ 'password_update_1', 'password_update_2' ]