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

Rpj*_*Rpj 12 ruby json

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

      def execute_method(foo)
...

        response = self.class.get("/foo.php", query: query)
        JSON.parse(response.body)
      end
Run Code Online (Sandbox Code Playgroud)

Mag*_*uss 26

正如@Anthony指出的那样,使用开始/救援.

begin
  ...
  JSON.parse(response.body)
rescue JSON::ParserError
  # Handle error
end
Run Code Online (Sandbox Code Playgroud)

更新

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

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

valid_json?("abc") #=> false
valid_json?("{}") #=> true
Run Code Online (Sandbox Code Playgroud)