"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo manejar eficazmente datos JSON incorrectos con `json_decode()` de PHP?

¿Cómo puedo manejar eficazmente datos JSON incorrectos con `json_decode()` de PHP?

Publicado el 2024-11-25
Navegar:416

How Can I Effectively Handle Bad JSON Data with PHP\'s `json_decode()`?

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():

  • Devuelve los datos decodificados o nulos en caso de un error.
  • También puede devolver nulo cuando la cadena JSON contiene nulo.
  • Genera advertencias de errores.

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.

Último tutorial Más>

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