Algo do género:
var jsonString = '{ "Id": 1, "Name": "Coke" }';
//should be true
IsJsonString(jsonString);
//should be false
IsJsonString("foo");
IsJsonString("<div>foo</div>")
A solução não deve conter a tentativa/apanha. Alguns de nós ligam "quebram em todos os erros" e eles não'não gostam da quebra do depurador naquelas cordas do JSON inválidas.
Você pode usar a função javascript eval() para verificar se ela's é válida.
por exemplo
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
}
Alternativamente, você pode utilizar a função JSON.parse
de json.org:
try {
json = JSON.parse(jsonString);
} catch (exception) {
json = null;
}
if (json) {
//this is json
}
Espero que isto ajude.
AVISO: eval()
é perigoso se alguém adicionar código JS malicioso, uma vez que ele o executará. Certifique-se de que o JSON String é fiável, ou seja, você o obteve de uma fonte confiável.
**Editar*** Para a minha 1ª solução, é recomendado que faça isto.
try {
json = eval("{" + jsonString + "}");
} catch (exception) {
//It's advisable to always catch an exception since eval() is a javascript executor...
json = null;
}
Para a garantia doson-ness. Se o jsonString
é't puro JSON, a avaliação lançará uma exceção.