2011-11-17 265 views
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 [“进料”] [“条目”] [“标题”] [ 0]。

如何循环访问哈希并获取特定元素?

+2

一个问题,你真的想在这里哈希工作?或者你只是尝试这个作为第一个选择;因为通常你会使用像nokogiri这样的xml解析器。 – robustus

+0

是的,你是对的。处理完这个之后,我决定首先解析xml。 – Jarred

回答

5

这是怎么回事,因为@data["feed"]["entry"]是散列的数组:

puts @data["feed"]["entry"].class # => Array 

这个数组中的每个元素散列具有“ID”,“类别”,“冠军”等价值观。

对于抓住每一个标题尝试使用下面的代码片段:

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

感谢您的解释。你给我的代码只是在“entry”=> 之后输出整个散列值我仍然对如何从这里获取特定元素感到困惑。 – Jarred

+0

如果你想采取特定的元素,你可以使用[],因为我用'title'显示,不是吗? – WarHog

+0

这就是我使用上述循环时所得到的结果:http://pastebin.com/z9WkscFm – Jarred