2010-10-15 22 views

Respuesta

43

jQuery's parseJson generará una excepción si el json no está en el formato correcto. Puede envolver su llamada en un bloque try catch. (Pero recuerde que el tener excepciones en el flujo de su código normal es una mala práctica)

data = '{}'; 
try { 
    json = $.parseJSON(data); 
} catch (e) { 
    // not json 
} 

También puede utilizar el método nativo JSON.parse() que arroja un SyntaxError excepción

Si usted está esperando mala JSON como parte de su normalidad flujo de trabajo del programa, entonces usted puede verificarlo con expresiones regulares primero, Mic's answer is pretty solid Pero en su caso, PHP siempre debe generar JSON válida en condiciones normales. Si no es válido, probablemente haya un error en su software

+0

Gracias por su respuesta rápida, pero estoy un poco confundido con la mala práctica. ¿Quieres decir que no debería intentar resolver mi problema con la excepción de parseJSON? – Devyn

+1

No, disparar excepciones en la ejecución normal es una mala práctica. Las excepciones solo deben activarse cuando algo está mal (cuando no se espera algún resultado) –

+1

¿Sigue funcionando? – Fil

-1

en JavaScript, puede utilizar typeof

+3

Cómo saber si 'typeof (A)! = Typeof (B)', donde 'A' y' B' son cadenas ...? :-) –

+2

Gracias por el consejo del año pero typeof no funciona para mi ejemplo :) – Devyn

6

datos de retorno es siempre una cadena (es decir, una secuencia de caracteres). Pero, si le dice a jQuery que espera una respuesta json, intentará convertir la cadena en un objeto javascript por usted.
No hay un protocolo de red dedicado para transferir objetos JavaScript a través de Internet.

7
try { 
    jQuery.parseJSON(json) 
    //must be valid JSON 
} catch(e) { 
    //must not be valid JSON  
} 
Cuestiones relacionadas