如何在ruby中处理JSON解析器错误

时间:2015-01-14 13:25:50

标签: ruby json

如果响应主体不在JSON中,我如何避免解析JSON,否则会抛出一个我想要处理的巨大异常

      def execute_method(foo)
...

        response = self.class.get("/foo.php", query: query)
        JSON.parse(response.body)
      end

1 个答案:

答案 0 :(得分:20)

正如@Anthony指出的那样,使用begin / rescue。

begin
  ...
  JSON.parse(response.body)
rescue JSON::ParserError
  # Handle error
end

<强>更新

要检查字符串是否是有效的json,您可以创建一个方法:

def valid_json?(string)
  !!JSON.parse(string)
rescue JSON::ParserError
  false
end

valid_json?("abc") #=> false
valid_json?("{}") #=> true