Errores del analizador sintáctico al analizar JSON en PHP
Con la función json_last_error
se puede saber qué error exactamente
ocurrió durante el análisis de JSON.
Veamos cómo se hace esto. Supongamos que tenemos
un JSON incorrecto:
<?php
$json = '["a", "b", "c",]';
?>
Intentemos analizarlo:
<?php
$data = json_decode($json);
var_dump($data); // mostrará null
?>
Como ocurrió un error, entonces json_last_error
al llamarla devolverá el número de este error:
<?php
$error = json_last_error();
var_dump($error); // número del error
?>
El número devuelto se puede comparar con constantes especiales de PHP. Basándose en esto, se puede escribir código que capture varios tipos de errores:
<?php
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo 'no hay errores';
break;
case JSON_ERROR_DEPTH:
echo 'se alcanzó la profundidad máxima de la pila';
break;
case JSON_ERROR_STATE_MISMATCH:
echo 'bits incorrectos o discrepancia de modos';
break;
case JSON_ERROR_CTRL_CHAR:
echo 'carácter de control incorrecto';
break;
case JSON_ERROR_SYNTAX:
echo 'error de sintaxis, JSON incorrecto';
break;
case JSON_ERROR_UTF8:
echo 'caracteres UTF-8 incorrectos, posiblemente codificados incorrectamente';
break;
default:
echo 'error desconocido';
break;
}
?>
Se da una cadena con cierto JSON. Analícela en una estructura de datos de PHP. Muestre el resultado del análisis o la razón del error, si no se pudo analizar el JSON.