在Ruby中,有没有一种方法可以在尝试解析字符串之前检查它是否是有效的json?例如,从其他URL获取一些信息,有时它返回json,有时它可能返回一个垃圾,这不是一个有效的响应。我的代码:
def get_parsed_response(response) parsed_response = JSON.parse(response) end
368yc8dk1#
您可以创建一个方法来执行检查:
def valid_json?(json) JSON.parse(json) true rescue JSON::ParserError, TypeError => e false end
ncgqoxb02#
您可以这样解析它
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
4bbkushb3#
我认为parse_json应该返回nil,如果它是无效的,并且不应该出错。
parse_json
nil
def parse_json string JSON.parse(string) rescue nil end unless json = parse_json string parse_a_different_way end
neskvpey4#
让我建议一个更短的变体
def valid_json?(string) !!(JSON.parse(string)) rescue false end > valid_json?("test") => false > valid_json?("{\"mail_id\": \"999129237\", \"public_id\": \"166118134802\"}") => true
4条答案
按热度按时间368yc8dk1#
您可以创建一个方法来执行检查:
ncgqoxb02#
您可以这样解析它
4bbkushb3#
我认为
parse_json
应该返回nil
,如果它是无效的,并且不应该出错。neskvpey4#
让我建议一个更短的变体