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.
Sie können die Javascript-Funktion eval() verwenden, um zu überprüfen, ob sie gültig ist.
z.B..
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
}
Alternativ können Sie auch die Funktion JSON.parse
von json.org verwenden:
try {
json = JSON.parse(jsonString);
} catch (exception) {
json = null;
}
if (json) {
//this is json
}
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.
try {
json = eval("{" + jsonString + "}");
} catch (exception) {
//It's advisable to always catch an exception since eval() is a javascript executor...
json = null;
}
Um die JSON-Natur zu garantieren. Wenn der jsonString
nicht reines JSON ist, wird das eval eine Exception auslösen.