Wie prüft man, ob eine Zeichenkette eine gültige JSON-Zeichenkette in JavaScript ist, ohne Try/Catch zu verwenden?
Etwa so:
var jsonString = '{ "Id": 1, "Name": "Coke" }';
//should be true
IsJsonString(jsonString);
//should be false
IsJsonString("foo");
IsJsonString("<div>foo</div>")
Die Lösung sollte kein try/catch enthalten. Einige von uns aktivieren "break on all errors" und sie mögen es nicht, wenn der Debugger bei diesen ungültigen JSON-Strings abbricht.
489
3
Verwenden Sie einen JSON-Parser wie
JSON.parse
:In prototypeJS haben wir die Methode isJSON. Sie können das ausprobieren. Auch json könnte helfen.
Sie können die Javascript-Funktion eval() verwenden, um zu überprüfen, ob sie gültig ist.
z.B..
Alternativ können Sie auch die Funktion
JSON.parse
von json.org verwenden:Hoffentlich hilft das.
WARNUNG:
eval()
ist gefährlich, wenn jemand bösartigen JS-Code hinzufügt, da er diesen ausführen wird. Stellen Sie sicher, dass der JSON-String vertrauenswürdig ist, d.h. Sie haben ihn aus einer vertrauenswürdigen Quelle.Edit Für meine 1. Lösung ist es empfehlenswert, dies zu tun.
Um die JSON-Natur zu garantieren. Wenn der
jsonString
nicht reines JSON ist, wird das eval eine Exception auslösen.