"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso lidar efetivamente com dados JSON incorretos com `json_decode()` do PHP?

Como posso lidar efetivamente com dados JSON incorretos com `json_decode()` do PHP?

Publicado em 2024-11-25
Navegar:312

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

Tratamento de dados JSON incorretos com json_decode() em PHP

Ao lidar com dados JSON usando json_decode(), é crucial lidar com dados inválidos efetivamente. Embora o script fornecido possa detectar JSON incorreto para strings como { bar: "baz" }, ele não consegue lidar com dados que não sejam strings, como "dados inválidos".

Compreendendo json_decode()

Para resolver esse problema, é essencial entender json_decode():

  • Ele retorna os dados decodificados ou nulo no caso de um erro.
  • Também pode retornar nulo quando a string JSON contém nulo.
  • Ele gera avisos de erros.

Suprimindo avisos com o operador @

Para suprimir avisos, uma opção é usar o operador @:

$data = @json_decode($_POST);

Essa abordagem silencia o aviso, mas requer verificações adicionais para lidar com erros e valores nulos:

if ($data === null && json_last_error() !== JSON_ERROR_NONE) {
    echo "Incorrect data";
}

Tratamento de erros personalizado

Outra opção é criar um script de tratamento de erros 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 fornece mensagens de erro detalhadas e lida com vários erros de análise JSON.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3