Algo así como:
var jsonString = '{ "Id": 1, "Name": "Coke" }';
//should be true
IsJsonString(jsonString);
//should be false
IsJsonString("foo");
IsJsonString("<div>foo</div>")
La solución no debe contener try/catch. Algunos de nosotros activamos "break on all errors" y no les gusta que el depurador se rompa en esas cadenas JSON no válidas.
Puede utilizar la función javascript eval() para verificar si es válida.
Por ejemplo
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
}
Como alternativa, puede utilizar la función JSON.parse
de json.org:
try {
json = JSON.parse(jsonString);
} catch (exception) {
json = null;
}
if (json) {
//this is json
}
Espero que esto ayude.
AVISO: eval()
es peligroso si alguien añade código JS malicioso, ya que lo ejecutará. Asegúrate de que la cadena JSON es confiable, es decir, que la has obtenido de una fuente de confianza.
Editar Para mi primera solución, se recomienda hacer esto.
try {
json = eval("{" + jsonString + "}");
} catch (exception) {
//It's advisable to always catch an exception since eval() is a javascript executor...
json = null;
}
Para garantizar la jsonidad. Si el jsonString
no es JSON puro, el eval lanzará una excepción.