2014-11-17 20 views
5

Khi tôi đang cố gắng để phân tích một số loại phản ứng thành JSON Tôi nhận được lỗi sau. Tôi đã lớn lên JSON :: ParserError trong mã của tôi nếu phân tích cú pháp trong trường hợp thất bại. Nhưng loại ngoại lệ này không xuất hiện trong lỗi trình phân tích cú pháp này. Tôi không biết tại sao loại lỗi này lại bị ném? và Làm thế nào để giải quyết lỗi này?Không chuyển đổi ngầm của HTTParty :: đáp ứng vào Chuỗi

mã:

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

Lỗi:

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

    no implicit conversion of HTTParty::Response into String 

Trả lời

16

Các lỗi mà bạn đang nhận được là một TypeError. Nó được nâng lên khi bạn truyền sai đối số cho một số phương thức nhất định. Bạn có thể giải cứu nó như sau:

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

Tôi sẽ không đề xuất điều này. Lý do bạn đang nhận được một TypeErrorJSON.parse đòi hỏi một đối tượng String, và bạn đã vượt qua nó một đối tượng HTTParty::Response. Hãy thử cho nó một đối tượng String để thay thế. ví dụ:

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

Cảm ơn. Tôi sẽ kiểm tra – Sam

+0

response.body không làm việc ra cho tất cả các câu trả lời. vì vậy TypeError là giải pháp duy nhất để giải cứu điều này – Sam

Các vấn đề liên quan