Ruby哈希: 无法将字符串转换为整数

4
我是Ruby的新手,我在处理哈希表时遇到了一些问题。
我从YouTube API返回的XML已转换为哈希表。这是Hash.from_xml()返回的哈希表:http://pastebin.com/9xxE6iXU 我正在尝试从哈希表中获取每个结果的特定元素,例如标题、链接、作者等。每当我尝试循环遍历哈希表或获取特定元素时,我都会收到“无法将字符串转换为整数”的错误。
这是我用于循环的代码:
@data["feed"]["entry"]["title"].each do  |key, value|
    "<p>"+key+" "+value+"</p>"
end

我还尝试过获取特定的元素,比如@data["feed"]["entry"]["title"][0]。
我该如何循环遍历哈希表并获取特定的元素?

2
一个问题,你真的想在这里使用哈希吗?还是你只是尝试了这个作为第一个选项;因为通常你会使用像nokogiri这样的XML解析器。 - robustus
是的,你说得对。在使用它后,我决定先解析XML。 - Jarred
1个回答

5
那是因为@data["feed"]["entry"]是散列数组:
puts @data["feed"]["entry"].class  # => Array

这个数组里的每个元素哈希都有“id”、“category”、“title”等值。

如果想获取每个标题,请尝试使用以下代码片段:

@data["feed"]["entry"].each do |entry|
  puts entry["title"]
end
# => "TABE test adult basic education"
     "WhatCollegesHopeYouWon'tFindOutAboutACTSATTestPrep..."
     ....

谢谢您的解释。您给我的代码只是在“entry” =>之后输出整个哈希表。我仍然不清楚如何从中获取特定元素。 - Jarred
如果你想获取特定的元素,你可以使用[],就像我展示title一样,是吗? - WarHog
当我使用上述循环时,我得到的结果如下:http://pastebin.com/z9WkscFm - Jarred
好的,看这里:我从这里http://pastebin.com/9xxE6iXU获取了你的代码,并将其作为@data哈希在上面的示例中使用。之后,我得到的似乎是所有标题的列表:http://pastebin.com/DYHtP6kM - WarHog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接