在Ruby中,有没有办法在尝试解析字符串之前检查字符串是否有效?
例如从其他网址获取一些信息,有时会返回json,有时它会返回一个垃圾而不是有效的响应。
我的代码:
def get_parsed_response(response)
parsed_response = JSON.parse(response)
end
答案 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}}