循环ruby散列和输出特定元素

时间:2015-11-15 06:32:03

标签: ruby loops hash

我正在尝试循环使用特定数据的哈希输出。如果我想输出所有用户名。这就是我一次只能做到这一点但不是我想要的。

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"}]}
抱歉,我没有说清楚我的问题。我想迭代#34;用户名"然后我可以遍历每个用户名并输出特定数据,然后再转到下一个用户名

3 个答案:

答案 0 :(得分:1)

您可以通过以下方式获得所有用户名:

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

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

以上内容将为您提供一系列用户名,以便您根据需要进行操作。 :)

希望它有所帮助!

答案 1 :(得分:1)

你可以像这样循环你的json

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

答案 2 :(得分: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"]