Manejo de datos JSON incorrectos con json_decode() en PHP
Cuando se trata de datos JSON usando json_decode(), es crucial manejar datos no válidos eficazmente. Si bien el script proporcionado puede detectar JSON incorrecto para cadenas como { bar: "baz" }, no logra manejar datos que no son cadenas, como "datos no válidos".
Comprensión de json_decode()
Para solucionar este problema, es esencial comprender json_decode():
Supresión de advertencias con el operador @
Para suprimir las advertencias, una opción es utilizar el operador @:
$data = @json_decode($_POST);
Este enfoque silencia la advertencia, pero requiere comprobaciones adicionales para manejar errores y valores nulos:
if ($data === null && json_last_error() !== JSON_ERROR_NONE) { echo "Incorrect data"; }
Manejo de errores personalizado
Otra opción es crear un script de manejo de errores personalizado:
function handle_json_error() { $error = json_last_error(); switch ($error) { case JSON_ERROR_NONE: return true; case JSON_ERROR_DEPTH: echo "Maximum depth exceeded"; break; case JSON_ERROR_STATE_MISMATCH: echo "Invalid or malformed JSON"; break; case JSON_ERROR_CTRL_CHAR: echo "Control character error"; break; case JSON_ERROR_SYNTAX: echo "Syntax error"; break; case JSON_ERROR_UTF8: echo "Malformed UTF-8 characters"; break; default: echo "Unknown error"; } return false; } if (!handle_json_error()) { echo "Bad JSON data!"; }
Este script proporciona mensajes de error detallados y maneja varios errores de análisis JSON.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3