将多维数组中的字符串转换为Integer

时间:2011-04-19 01:06:50

标签: ruby casting integer typeerror

我在执行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值转换为整数,以便进行此比较?

1 个答案:

答案 0 :(得分:2)

问题是result["response"]["docs"]中的内容不是哈希值,而是像一个哈希那样解决它。在这种情况下,您需要result["response"]["docs"][0]["enid"]。如果您想了解原因,请尝试p result["response"]查看每个级别使用的Ruby数据结构。即使你已经阅读了一段时间,YAML也会有点误导。