2014-11-17 4 views
5

Когда я пытаюсь разобрать какой-то ответ в JSON, я получаю следующую ошибку. Я поднял JSON :: ParserError в моем коде, если сбой анализа невозможен. Но такое исключение не попадает под эту ошибку парсера. Я не знаю, почему эта ошибка возникает? и Как спасти эту ошибку?Неявное преобразование HTTParty :: Response to String

код:

begin 
    parsed_response = JSON.parse(response) 
rescue JSON::ParserError => e 
    nil 
end 

Ошибка:

A TypeError occurred in background at 2014-11-16 03:01:08 UTC : 

    no implicit conversion of HTTParty::Response into String 

ответ

16

Ошибка вы получаете это TypeError. Он возникает, когда вы передаете неправильный аргумент определенным методам. Вы можете спасти его вот так:

begin 
    parsed_response = JSON.parse(response) 
rescue JSON::ParserError, TypeError => e 
    puts e 
end 

Я бы не рекомендовал это. Причина, по которой вы получаете TypeError, состоит в том, что JSON.parse требует объекта String, и вы передали ему объект HTTParty::Response. Вместо этого попробуйте дать ему объект String. например:

parsed_response = JSON.parse(response.body) 
+0

Спасибо. Я проверю – Sam

+0

response.body не работает для всех ответов. поэтому TypeError - единственное решение для спасения этого – Sam

Смежные вопросы