web-dev-qa-db-fra.com

Vérifier si une chaîne est json valide avant d'essayer de l'analyser?

Dans Ruby, existe-t-il un moyen de vérifier si une chaîne est json valide avant d'essayer de l'analyser?

Par exemple, obtenir des informations à partir d'autres URL, parfois elle renvoie json, parfois elle peut renvoyer une erreur qui n'est pas une réponse valide.

Mon code:

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

Vous pouvez créer une méthode pour effectuer la vérification:

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

Vous pouvez l'analyser de cette façon

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
20
gotva

Je pense parse_json doit renvoyer nil s'il n'est pas valide et ne doit pas générer d'erreur.

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

unless json = parse_json string
  parse_a_different_way
end
7
stevo999999