Created
December 26, 2018 06:12
-
-
Save parzibyte/2d1bf499260adc1f88855dcb54d140ec to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// La función que nos dice el error | |
function obtenerErrorDeJSON() | |
{ | |
switch (json_last_error()) { | |
case JSON_ERROR_NONE: | |
return "No ha ocurrido ningún error"; | |
case JSON_ERROR_DEPTH: | |
return "Se ha excedido la profundidad máxima de la pila."; | |
case JSON_ERROR_STATE_MISMATCH: | |
return "Error por desbordamiento de buffer o los modos no coinciden"; | |
case JSON_ERROR_CTRL_CHAR: | |
return "Error del carácter de control, posiblemente se ha codificado de forma incorrecta."; | |
case JSON_ERROR_SYNTAX: | |
return "Error de sintaxis."; | |
case JSON_ERROR_UTF8: | |
return "Caracteres UTF-8 mal formados, posiblemente codificados incorrectamente."; | |
case JSON_ERROR_RECURSION: | |
return "El objeto o array pasado a json_encode() incluye referencias recursivas y no se puede codificar."; | |
case JSON_ERROR_INF_OR_NAN: | |
return "El valor pasado a json_encode() incluye NAN (Not A Number) o INF (infinito)"; | |
case JSON_ERROR_UNSUPPORTED_TYPE: | |
return "Se proporcionó un valor de un tipo no admitido para json_encode(), tal como un resource."; | |
default: | |
return "Error desconocido"; | |
} | |
} | |
# Hora de probarla. Tomamos el ejemplo anterior... | |
$objeto = [ | |
// Nivel 1 | |
"idCuenta" => "123ASD", | |
"cliente" => "parzibyte", | |
"saldo" => 250.0, | |
"movimientos" => [ | |
// Nivel 2 | |
[ | |
"tipo" => "salida", | |
"monto" => 125.0, | |
"fecha" => "2018-12-25", | |
"involucrados" => [ | |
// Nivel 3 | |
"nombre" => "Un nombre", | |
"idCuenta" => "456465", | |
], | |
], | |
[ | |
"tipo" => "salida", | |
"monto" => 666.55, | |
"fecha" => "2018-12-26", | |
], | |
], | |
]; | |
// Con profundidad de 3 para que se genere un error | |
$codificado = json_encode($objeto, 0, 3); | |
if ($codificado === false) { | |
echo "Ocurrió un error al codificar: " . obtenerErrorDeJSON(); | |
} else { | |
echo $codificado; | |
} | |
// Salida: Ocurrió un error al codificar: Se ha excedido la profundidad máxima de la pila. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment