我在执行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
值转换为整数,以便进行此比较?
答案 0 :(得分:2)
问题是result["response"]["docs"]
中的内容不是哈希值,而是像一个哈希那样解决它。在这种情况下,您需要result["response"]["docs"][0]["enid"]
。如果您想了解原因,请尝试p result["response"]
查看每个级别使用的Ruby数据结构。即使你已经阅读了一段时间,YAML也会有点误导。