Controleren of een tekenreeks een geldige json is voordat u deze probeert te ontleden?

Is er in Ruby een manier om te controleren of een tekenreeks een geldige json is voordat u deze probeert te ontleden?

Bijvoorbeeld het verkrijgen van wat informatie van andere url’s, soms retourneert het json, soms kan het een rommel retourneren die geen geldige reactie is.

Mijn code:

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

Antwoord 1, autoriteit 100%

U kunt een methode maken om de controle uit te voeren:

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

Antwoord 2, autoriteit 32%

Je kunt het op deze manier ontleden

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

Antwoord 3, autoriteit 13%

Ik denk dat parse_jsonnilmoet retourneren als het ongeldig is en er geen fouten mogen optreden.

def parse_json string
  JSON.parse(string) rescue nil
end
unless json = parse_json string
  parse_a_different_way
end

Other episodes