通过散列数组循环遍历

问题描述:

name: { 
     "accounts"=>{ 
      "data"=>[ 

       { 
       "access_token"=>"CAAUCR7n0ZC50BAGmqTb3FEYz9FzZCZAZBFdVZC6AM3iQrGUsVqWvCfI5q5vh4seRH6LwIQTSkZAznzeBaPlZBjQ3zcwdfWxPBIr78FZBVa8pymUzVX0UESSS7QC0Dm7iIUCMyRH175HV6ZCa2ugBmbJNB7joZB7oiILPH5jtpcCLkg8e7ztxyjeSODSO4ZBAM9z1pkZD", 
       "name"=>"UNX", 
       "id"=>"387832931391777", 
       }, 
       { 
       "access_token"=>"CAAUCR7n0ZC50BAEYnXR7bWGvhktsGXCaB43vB0mhSuKgZBQG1m5FyovssyVKt0XYv7K7essxPkVPU3nQZCqrQJeTtWhApV1cSYGsb4JbNmYlUiHmLHueEBjuomqRWVX6tvMZA0dA5zqMApbmPUtA7SBqruWUFzZAwZC9xZBXFMZCZAW7WNEL7epkb9dmiL2pX3AoZD", 
       "name"=>"Fuitter", 
       "id"=>"1412081982453898", 
       } 
       ]}} 

我想从data散列数组中获取name密钥。我用each来循环,但这样我就不得不在循环内嵌套循环。有没有另一种方法来完成这项工作?通过散列数组循环遍历

这个name键实际上是我的数据库中的数据类型为json的列。

<% session[:user].account.name.each do |test| %> 
    <% test.each do |me| %> 
    <%= me['data']['name']%> #unable to fetch name and gives me undefined method `[]' for nil:NilClass error 
    <br> 
    <% end %> 
<% end %> 

我试图通过嵌套循环来获取值,但我得到这个错误

unable to fetch name and gives me undefined method `[]' for nil:NilClass error 
+0

我看见你的JSON例子,我觉得这代码应该是。 ' ' – trnthanhtu

+1

你的意思是你想要''name''这个键的值吗? –

这样来做:

data_hash = { name: { 
     "accounts"=>{ 
      "data"=>[ 

       { 
       "access_token"=>"CAAUCR7n0ZC50BAGmqTb3FEYz9FzZCZAZBFdVZC6AM3iQrGUsVqWvCfI5q5vh4seRH6LwIQTSkZAznzeBaPlZBjQ3zcwdfWxPBIr78FZBVa8pymUzVX0UESSS7QC0Dm7iIUCMyRH175HV6ZCa2ugBmbJNB7joZB7oiILPH5jtpcCLkg8e7ztxyjeSODSO4ZBAM9z1pkZD", 
       "name"=>"UNX", 
       "id"=>"387832931391777", 
       }, 
       { 
       "access_token"=>"CAAUCR7n0ZC50BAEYnXR7bWGvhktsGXCaB43vB0mhSuKgZBQG1m5FyovssyVKt0XYv7K7essxPkVPU3nQZCqrQJeTtWhApV1cSYGsb4JbNmYlUiHmLHueEBjuomqRWVX6tvMZA0dA5zqMApbmPUtA7SBqruWUFzZAwZC9xZBXFMZCZAW7WNEL7epkb9dmiL2pX3AoZD", 
       "name"=>"Fuitter", 
       "id"=>"1412081982453898", 
       } 
       ] 
      } 
     } 
     } 

data_hash[:name]['accounts']['data'].map { |d| puts d['name'] } 
    # => UNX 
    # => Fuitter 
+0

拉杰Shakya,请考虑upvoting如果它真的帮助你解决你的问题的答案。谢谢。 –