DesenvolvedorWordPress WhatsApp

json_decode sem JSON_THROW_ON_ERROR falha em silêncio

Aquele null que você recebeu era erro de parse ou o valor era null mesmo? Sem a flag, não dá pra saber.

Falar comigo no WhatsApp

Dica de PHP · publicada em

O comportamento padrão do json_decode é devolver null quando o JSON é inválido. O problema é que um JSON válido contendo null devolve exatamente a mesma coisa, e você fica sem saber o que aconteceu.

Com JSON_THROW_ON_ERROR, um JSON malformado vira JsonException, que você captura e loga com a mensagem real. Isso importa muito ao consumir API externa, onde a resposta pode vir truncada ou ser uma página de erro em HTML.

Na codificação vale o mesmo, mais JSON_UNESCAPED_UNICODE e JSON_UNESCAPED_SLASHES: sem eles, acento vira sequência escapada e barra de URL vira \/, o que polui log e resposta de API.

try {
    $dados = json_decode($corpo, true, 512, JSON_THROW_ON_ERROR);
} catch (JsonException $e) {
    error_log('Resposta invalida da API: ' . $e->getMessage());
    return new WP_Error('json_invalido', 'Resposta inesperada do servico.');
}

$saida = json_encode($dados, JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

Na prática: sempre JSON_THROW_ON_ERROR. E UNESCAPED_UNICODE|UNESCAPED_SLASHES ao codificar.

Precisa resolver isso no site de um cliente agora?

Me chame no WhatsApp com o contexto. Diagnóstico inicial sem compromisso.

WhatsApp: (43) 99932-9697

ou e-mail: [email protected]

Tem alguma dúvida? Ficarei feliz em ajudar. Clique Aqui