【问题标题】:Cast String in multi-dim array to Integer将多维数组中的字符串转换为整数
【发布时间】:2011-08-08 07:19:59
【问题描述】:

我有一个变量 (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 值转换为整数以便进行比较?

【问题讨论】:

    标签: ruby casting integer typeerror


    【解决方案1】:

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

    【讨论】:

    • 太棒了!谢谢彼得!正好。尝试使用 [0] 术语并且有效。希望这对其他人也有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 2012-11-17
    相关资源
    最近更新 更多