Usted puede utilizar la función de JavaScript eval() para verificar si es válido.
p. Ej.
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 de JSON.parse
json.org:
try {
json = JSON.parse(jsonString);
} catch (exception) {
json = null;
}
if (json) {
//this is json
}
Espero que esto ayude.
ADVERTENCIA: eval()
es peligroso si alguien añade código JS malicioso, ya que lo ejecutará. Asegúrese de que la cadena JSON sea confiable, es decir, que la obtuvo de una fuente confiable.
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 garantía JSON-dad. Si el jsonString
no es JSON puro, el eval emitirá una excepción.
¿Hay una razón válida para no usar 'try'? –
@NickT Porque si activa "interrumpir todos los errores" en el depurador, lo hará. Chrome ahora tiene la opción de romper los errores no detectados aunque. –
Para los curiosos, así es como el motor V8 hace su análisis JSON: http://v8.googlecode.com/svn/trunk/src/json-parser.h –