在尝试解析字符串之前检查字符串是否有效json?

时间:2014-10-07 09:34:33

标签: ruby json

在Ruby中,有没有办法在尝试解析字符串之前检查字符串是否有效?

例如从其他网址获取一些信息,有时会返回json,有时它会返回一个垃圾而不是有效的响应。

我的代码:

def get_parsed_response(response)
  parsed_response = JSON.parse(response)
end

3 个答案:

答案 0 :(得分:55)

您可以创建一个方法来进行检查:

def valid_json?(json)
    JSON.parse(json)
    return true
  rescue JSON::ParserError => e
    return false
end

答案 1 :(得分:20)

你可以这样解析

begin
  JSON.parse(string)  
rescue JSON::ParserError => e  
  # do smth
end 

# or for method get_parsed_response

def get_parsed_response(response)
  parsed_response = JSON.parse(response)
rescue JSON::ParserError => e  
  # do smth
end

答案 2 :(得分:6)

我认为如果parse_json无效,nil应该返回def parse_json string JSON.parse(string) rescue nil end unless json = parse_json string parse_a_different_way end ,并且不应该错误。

def JSON.parse_without_error string
  JSON.parse(string) rescue nil
end

JSON.parse_without_error"{\"test\":1}" => {"test"=>1}

JSON.parse_without_error"{\"test\:1}" => nil

可替换地:

{{1}}