1

我正在使用 koala 从 facebook 获取以下 JSON 对象:

@friends = [{"name"=>"Jolie Chide", "gender"=>"female", "id"=>"4216323"},
            {"name"=>"Seth Spring", "gender"=>"male", "id"=>"3429277"}]

我想做的是以下几点:

<% @friends.where(:gender == "female").order("@friends['name'] ASC").each do |friend| %>
  <%= friend['name'] %>
<% end %>

如您所知,这是行不通的。我习惯于标准的 Ruby 对象,而不是上面的 JSON。如果有人对如何使上述工作有任何建议,即使这意味着从 JSON 转换数据,那也很好。谢谢你的帮助。

4

2 回答 2

4

你所拥有的不是 JSON,而是一个Arrayof Hashes。这些是内置的 Ruby 集合,而不是 ActiveRecord 关系,并且它们具有类似select和的方法sort_by,允许您在其中做您想做的事情。你应该熟悉这些类和它们的方法,因为它们对于 Ruby 来说比 ActiveRecord 的东西更基础,而且它们无处不在。

你想要的操作可以表示如下:

@friends.select {|hash| hash['gender'] == 'female'}.sort_by {|hash| hash['name']}
于 2012-04-09T21:41:35.897 回答
0

This is the best way to grab the json data and assign to instance variable and use following .

Ascending

@graph = @abc.sort_by { |hash| hash['created_time'] }

or

graph = abc.sort_by { |hash| hash['created_time'] }

Descending

@graph = @abc.sort_by { |hash| hash['created_time'] }.reverse!

or

graph = abc.sort_by { |hash| hash['created_time'] }.reverse!
于 2015-01-19T10:00:10.017 回答