Niečo ako:
var jsonString = '{ "Id": 1, "Name": "Coke" }';
//should be true
IsJsonString(jsonString);
//should be false
IsJsonString("foo");
IsJsonString("<div>foo</div>")
Riešenie by nemalo obsahovať try/catch. Niektorí z nás majú zapnuté "break on all errors" a nepáči sa im, že sa debugger rozbije na týchto neplatných reťazcoch JSON.
Na overenie platnosti môžete použiť funkciu javascript eval().
Napr.
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
}
Prípadne môžete použiť funkciu JSON.parse
z json.org:
try {
json = JSON.parse(jsonString);
} catch (exception) {
json = null;
}
if (json) {
//this is json
}
Dúfam, že to pomôže.
UPOZORNENIE: eval()
je nebezpečný, ak niekto pridá škodlivý kód JS, pretože ho vykoná. Uistite sa, že reťazec JSON je dôveryhodný, t. j. že ste ho získali z dôveryhodného zdroja.
Edit V prípade môjho 1. riešenia sa to'odporúča urobiť.
try {
json = eval("{" + jsonString + "}");
} catch (exception) {
//It's advisable to always catch an exception since eval() is a javascript executor...
json = null;
}
Aby ste zaručili json-ovosť. Ak jsonString
nie je'čistý JSON, eval vyhodí výnimku.