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