在 Ruby 中,在尝试解析字符串之前,有没有检查字符串是否有效的 json 的方法?
例如,从其他 URL 获取一些信息,有时它返回 json,有时它可能返回一个无效响应的垃圾。
我的代码:
def get_parsed_response(response) parsed_response = JSON.parse(response) end
你可以这样解析
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
您可以创建一个方法来进行检查:
def valid_json?(json) JSON.parse(json) true rescue JSON::ParserError, TypeError => e false end
我认为 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
让我建议一个更短的变体
def valid_json?(string) !!(JSON.parse(string)) rescue false end > valid_json?("test") => false > valid_json?("{\"mail_id\": \"999129237\", \"public_id\": \"166118134802\"}") => true