Приведите строку в многомерном массиве в целое число - PullRequest
1 голос
/ 19 апреля 2011

У меня есть переменная (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 Ответ

2 голосов
/ 19 апреля 2011

Проблема в том, что то, что в result["response"]["docs"], НЕ является хешем, и вы обращаетесь к нему как к одному.В этом случае вам нужно result["response"]["docs"][0]["enid"].Если вы хотите понять почему, попробуйте p result["response"], чтобы увидеть, какие структуры данных Ruby используются на каждом уровне.YAML может немного вводить в заблуждение, даже если вы читали его некоторое время.

...