Kažkas panašaus į:
var jsonString = '{ "Id": 1, "Name": "Coke" }';
//should be true
IsJsonString(jsonString);
//should be false
IsJsonString("foo");
IsJsonString("<div>foo</div>")
Sprendime neturėtų būti try/catch. Kai kurie iš mūsų įjungia "break on all errors" ir jiems'nepatinka, kad derintuvas nutrūksta dėl tų negaliojančių JSON eilučių.
Norėdami patikrinti, ar ji galioja, galite naudoti "javascript" eval() funkciją.
pvz.
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
}
Arba galite naudoti JSON.parse
funkciją iš json.org:
try {
json = JSON.parse(jsonString);
} catch (exception) {
json = null;
}
if (json) {
//this is json
}
Tikiuosi, kad tai padės.
ĮSPĖJIMAS: eval()
yra pavojinga, jei kas nors prideda kenkėjišką JS kodą, nes jis bus įvykdytas. Įsitikinkite, kad JSON eilutė yra patikima, t. y. gavote ją iš patikimo šaltinio.
Redaguoti Mano 1-ajame sprendime rekomenduojama'tai padaryti.
try {
json = eval("{" + jsonString + "}");
} catch (exception) {
//It's advisable to always catch an exception since eval() is a javascript executor...
json = null;
}
Kad *užtikrintumėte json patikimumą. Jei jsonString
nėra grynasis JSON, eval bus išmesta išimtis.