670 votes

Comment vérifier si une chaîne est une chaîne JSON valide en JavaScript sans l’aide de Try/Catch

Quelque chose comme :

EDIT : La solution ne doit pas contenir try/catch. Certains d'entre nous tourner sur « pause sur toutes les erreurs » et ils n’aiment pas le débogueur se brisant sur les chaînes Json non valides.

1121voto

Gumbo Points 279147

Utiliser un analyseur JSON comme `` :

498voto

Matt H. Points 1995

Je sais je suis 3ans tardivement à cette question, mais je me sentais comme carillon.

Alors que la solution du Gumbo fonctionne très bien, il ne manipule pas des quelques cas où aucune exception n’est déclenchée pour``

Je préfère aussi revenir le JSON analysé en même temps, si le code appelant n’a pas à appeler `` une seconde fois.

Cela semble fonctionner bien pour mes besoins :

192voto

Mic Points 13418

Jetez un oeil autour de la ligne 450 de https://github.com/douglascrockford/JSON-js/blob/master/json2.js

Il y a une expression rationnelle qui recherchent un JSON valide, quelque chose comme :

19voto

Ifi Points 276

dans prototype js, nous avons isJSON de méthode. essayer ça

http://API.PrototypeJS.org/Language/String/prototype/isjson/

même http://www.prototypejs.org/learn/json

2voto

Buhake Sindi Points 38654

Vous pouvez utiliser le javascript eval() fonction pour vérifier si il est valide.

par exemple

var jsonString = '{ "Id": 1, "Name": "Coke" }';
var json;

try {
  json = eval(jsonString);
} catch (exception) {
  //It's advisable to always catch an exception since eval() is a javascript executor...
  json = null;
}

if (json) {
  //this is json
}

Alternativement, vous pouvez utiliser JSON.parse fonction de json.org:

try {
  json = JSON.parse(jsonString);
} catch (exception) {
  json = null;
}

if (json) {
  //this is json
}

Espérons que cette aide.

AVERTISSEMENT: eval() est dangereux si quelqu'un ajoute malveillants code JS, car il va l'exécuter. Assurez-vous que la Chaîne JSON est digne de confiance, c'est à dire que vous l'avez obtenu à partir d'une source de confiance.

Edit Pour mon 1er solution, il est recommandé de le faire.

 try {
      json = eval("{" + jsonString + "}");
    } catch (exception) {
      //It's advisable to always catch an exception since eval() is a javascript executor...
      json = null;
    }

Pour garantir json-ness. Si l' jsonString n'est pas pur JSON, eval lèvera une exception.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X