如何从JSON中有效地提取特定信息

时间:2014-03-02 23:06:38

标签: ruby json calendar google-calendar-api

我目前有一个公开的Google日历,我使用Google's API成功删除了JSON数据。

我正在使用HTTParty将JSON转换为ruby对象。

response = HTTParty.get('http://www.google.com/calendar/feeds/colorado.edu_mdpltf14q21hhg50qb3e139fjg@group.calendar.google.com/public/full?alt=json&orderby=starttime&max-results=15&singleevents=true&sortorder=ascending&futureevents=true')

我想要检索许多标题,事件名称,开始时间,结束时间等。我可以使用

之类的命令来获取这些内容
response["feed"]["title"["$t"]

表示日历的标题,

response["feed"]["entry"][0]["title"]["$t"]

表示活动的标题。

我的问题是双重的。一,是否有更简单的方法来提取这些数据?二,如何提取多个事件信息呢?我试过了:

response.each do |x| response["feed"]["title"]["$t"]

但是没有将字符串隐式转换为整数错误。

2 个答案:

答案 0 :(得分:0)

根据你的例子,这应该这样做

 response["feed"]["entry"].map {|entry| entry["title"]["$t"] }

答案 1 :(得分:0)

response['feed']['entry']是一个简单的哈希数组。最好使用

将该数组提取到临时变量
entries = response['feed']['entry']

此后您的代码完全取决于您需要实现的目标。例如,使用您提供的URL

puts entries.length

显示

2

entries.each do |entry|
  puts entry['title']['$t']
end

给出

NEW EVENT
Future EVENT

如果我们可以帮助您实现具体目标,请更改您的答案或在评论中要求澄清。