2011-04-19 74 views
1

我有一个变量(result)做YAML::dump(result)时,看起来像这样:铸造字符串到整数

responseHeader: 
    status: 0 
    QTime: 1 
    params: 
    wt: ruby 
    q: enid:(15542697739) 
response: 
    numFound: 1 
    start: 0 
    docs: 
    - enid: "15542697739" 

我想要做的enid这样的条件比较:

if result["response"]["docs"]["enid"].to_i == num['1']['car'] 

其中num['1']['car']是一个整数。

每当我尝试,我得到抛出一个TypeError,

can't convert String into Integer 
(TypeError) 

即使我尝试

result["response"]["docs"]["enid"].to_i 

Integer(result["response"]["docs"]["enid"]) 

如何让我的enid值转换为一个整数,所以我可以做这个比较?

回答

2

问题是result["response"]["docs"]中的内容不是散列,而是像一个散列一样。在这种情况下你需要的是result["response"]["docs"][0]["enid"]。如果你想知道为什么,请尝试p result["response"]来查看每个级别使用的Ruby数据结构。即使你已经阅读了一段时间,YAML在这里可能会有点误导。

+0

太棒了!谢谢彼得!正好。试过[0]这个术语,这是有效的。希望这可以帮助其他人! – Sly 2011-04-19 21:37:42