Почему этот оператор Ruby создает исключение?(Массивы / Bools) - PullRequest
0 голосов
/ 04 августа 2010

Я не Ruby парень, я просто играю одного по телевизору.Я должен изменить чью-то старую работу Cron, чтобы снять JSON-файл и преобразовать его в объекты.

Вот код

raw_json = Net::HTTP.get(URI.parse("url removed to protect the innocent"))

tags = ActiveSupport::JSON.decode(raw_json)

puts tags.count

tags.count будет точно трассироваться как 5, но ТОГДА ЛИНИИ немедленновызывает сбой следующим образом:

5 #the accurate count!
rake aborted!
undefined method `count' for false:FalseClass

Что такое дефио?

Ответы [ 4 ]

1 голос
/ 04 августа 2010

Что такое содержание raw_json?Кажется, что происходит то, что ActiveSupport::JSON#decode возвращает ложь (следовательно, undefined method 'count' for false:FalseClass).Я думаю, что JSON#decode возвращает ложь только при наличии пустой строки, что означает, что HTTP#get возвращает пустую строку.Проверьте raw_json и посмотрите, содержит ли он то, что вы ожидаете.

1 голос
/ 04 августа 2010

, поэтому я понятия не имею, что здесь происходит, но JSON.decode должен дать вам хэш, у которого нет метода подсчета. У него есть метод размера, хотя

tags.size

если это не сработает, попробуйте сделать p-теги или поместите tags.class.name, чтобы попытаться выяснить, с чем вы работаете

0 голосов
/ 19 сентября 2011

Проблема в том, что:

>> ActiveSupport::JSON::decode("")
=> false
>> ActiveSupport::JSON::decode("false")
=> false

Это очень странное поведение.

0 голосов
/ 04 августа 2010

Видимо, теги имеют значение false, что может означать, что ваш Net :: HTTP.get потерпел неудачу (я полагаю, ваш URL неверен).Попробуйте напечатать теги, чтобы увидеть, что это такое.(В любом случае, я думаю, что вы должны использовать действительный URI)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...