Détails
Comment vérifier si une chaîne est une chaîne JSON valide en JavaScript sans utiliser Try/Catch ?
Quelque chose comme :
var jsonString = '{ "Id": 1, "Name": "Coke" }';
//should be true
IsJsonString(jsonString);
//should be false
IsJsonString("foo");
IsJsonString("<div>foo</div>")
La solution ne doit pas contenir de try/catch. Certains d’entre nous ont activé l’option " break on all errors " et ils n’aimeraient pas que le débogueur s’interrompe sur ces chaînes JSON invalides.
489
3
Utilisez un analyseur JSON comme
JSON.parse
:Dans le prototypeJS, nous avons la méthode isJSON. Vous pouvez l'essayer. Même json pourrait vous aider.
Vous pouvez utiliser la fonction javascript [eval()][1] pour vérifier s'il est valide.
Par exemple
Vous pouvez également utiliser la fonction
JSON.parse
de [json.org][2] :J'espère que cela vous aidera.
ATTENTION :
eval()
est dangereux si quelqu'un ajoute du code JS malveillant, car il l'exécutera. Assurez-vous que la chaîne JSON est digne de confiance, c'est-à-dire que vous l'avez obtenue d'une source fiable.Edit Pour ma 1ère solution, il est recommandé de faire cela.
Pour garantir le json-ness. Si le
jsonString
n'est pas du pur JSON, l'eval lèvera une exception.[1] : http://en.wikipedia.org/wiki/JSON#JavaScript_eval.28.29 [2] : https://github.com/douglascrockford/JSON-js/blob/master/json2.js