Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created December 26, 2018 06:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/2d1bf499260adc1f88855dcb54d140ec to your computer and use it in GitHub Desktop.
Save parzibyte/2d1bf499260adc1f88855dcb54d140ec to your computer and use it in GitHub Desktop.
<?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