2010-02-23 24 views
14

Cuando se usa PHP de json_decode(), no veo una manera de distinguir entre un valor NULL de retorno que indica una falla en la decodificación y una decodifica correctamente NULL valor:Detección json_decode() en PHP

var_dump(json_decode('nonsense')); // returns NULL 
var_dump(json_decode(json_encode(NULL))); // also returns NULL 

Y caso uno no lanza una excepción. Así que no estoy seguro de cómo probar una falla de descodificación.

Ideas?

+0

FYI, técnicamente, un documento JSON no puede contener solo un valor nulo, por lo que no debe haber nada que lo distinga. PHP es lo suficientemente bueno para extender JSON para incluir matrices y escalares como cadenas, números y nulos, pero estos no son válidos en el nivel superior en un documento JSON. –

Respuesta

29

Debería comprobar json_last_error para cualquier error de análisis JSON.

json_decode($string); 
switch(json_last_error()) { 
    case JSON_ERROR_DEPTH: 
     echo ' - Maximum stack depth exceeded'; 
    break; 
    case JSON_ERROR_CTRL_CHAR: 
     echo ' - Unexpected control character found'; 
    break; 
    case JSON_ERROR_SYNTAX: 
     echo ' - Syntax error, malformed JSON'; 
    break; 
    case JSON_ERROR_NONE: 
     echo ' - No errors'; 
    break; 
} 
+0

Ser nuevo en php 5.3 explicaría por qué no lo sabía. Gracias por mencionarlo. Descargo nueva documentación hoy. –

+0

No hay problema, me alegro de poder ayudar. –

Cuestiones relacionadas