Şöyle bir şey:
var jsonString = '{ "Id": 1, "Name": "Coke" }';
//should be true
IsJsonString(jsonString);
//should be false
IsJsonString("foo");
IsJsonString("<div>foo</div>")
Çözüm try/catch içermemelidir. Bazılarımız "break on all errors" özelliğini açıyor ve bu geçersiz JSON dizelerinde hata ayıklayıcının kırılmasından hoşlanmıyorlar.
Geçerli olup olmadığını doğrulamak için javascript eval() işlevini kullanabilirsiniz.
Örneğin.
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
}
Alternatif olarak, json.org adresindeki JSON.parse
fonksiyonunu kullanabilirsiniz:
try {
json = JSON.parse(jsonString);
} catch (exception) {
json = null;
}
if (json) {
//this is json
}
Umarım bu yardımcı olur.
UYARI: Birisi kötü amaçlı JS kodu eklerse eval()
kodu çalıştırılacağından tehlikelidir. JSON Dizesinin güvenilir olduğundan, yani güvenilir bir kaynaktan aldığınızdan emin olun.
Edit 1. çözümüm için bunu yapmanız önerilir.
try {
json = eval("{" + jsonString + "}");
} catch (exception) {
//It's advisable to always catch an exception since eval() is a javascript executor...
json = null;
}
Json-ness'ı garanti altına almak için. Eğer jsonString
saf JSON değilse, eval bir istisna fırlatacaktır.