2015-11-15 34 views
0

我想通过哈希循环输出特定数据。如果我想输出所有用户名。这就是我一次可以做到的,但不是我想要的。循环红宝石哈希和输出特定元素

puts username = json["users"][0]["username"] 
puts username = json["users"][1]["username"] 

也试过

json.each { |x| puts json["users"][x]["username"]} 

这是哈希结构

{"success"=>true, "users"=>[{"id"=>"1523493", "username"=>"myname","age"=>"21"},{"id"=>"653172", "username"=>"anothername","age"=>"65"}]} 

抱歉,我没有让我的问题不够清楚。我想重复的“用户名”散,然后我可以通过每个用户名和输出特定的数据循环移动到下一个用户名

+0

也users.map {|入门|把条目[“用户名”]}给了我一个错误没有隐含的字符串转换为整数 –

回答

1

你也可以遍历您的JSON这样

json["users"].each do |u| 
    username = u["username"] 
    #Do some logic with username 
    #like user = User.find_by_username(username) 
end 
1

之前,您可以通过做这样的事情让所有的用户名一气呵成:

json = { "users" => [{"id"=>"1523493", "username"=>"myname"},{"id"=>"653172", "username"=>"anothername"}] } 

json["users"].map { |user| user["username"] } 
# => ["username", "anothername"] 

上述内容将为您提供一组用户名,可以根据您的需要进行处理。 :)

希望它有帮助!

+0

对不起,我没有让我的问题清楚,我想。对于“用户名”的每一次出现,我都想用它作为循环,然后我可以提取我需要的元素。我也没有发布正确的散列,现在已经纠正它。 –

0
h = {"success"=>true, 
    "users"=>[{"id"=>"1523493", "username"=>"myname","age"=>"21"}, 
       {"id"=>"653172", "username"=>"anothername","age"=>"65"}]} 

h["users"].map { |user| user["username"] } 
    #=> ["myname", "anothername"] 
+0

这确实很好,但是,我已经更新了我的任务,因为我不够清楚,并且发布了错误的哈希结构,对不起。 –