【问题标题】:How can I efficiently pull specific information from JSON如何有效地从 JSON 中提取特定信息
【发布时间】:2014-03-03 09:09:05
【问题描述】:

我目前有一个公开的 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"]

但这会吐出一个字符串没有隐式转换为整数的错误。

【问题讨论】:

    标签: ruby json calendar google-calendar-api


    【解决方案1】:

    根据您的示例,应该这样做

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

    【讨论】:

      【解决方案2】:

      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
      

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

      【讨论】:

      • 特别是我想创建一个数组数组。每个数组都应该包含与每个事件相关的所有数据。所以 Array[0][0] 可能是第一个事件的标题,而 Array[1][0] 可能是第二个事件的标题等。我想要标题、活动名称、开始时间、结束时间、地点和描述。
      猜你喜欢
      • 2018-01-06
      • 1970-01-01
      • 2015-12-07
      • 2022-12-18
      • 2013-02-01
      • 2017-07-19
      • 2020-10-01
      • 1970-01-01
      • 2022-09-30
      相关资源
      最近更新 更多