Erros do analisador sintático ao analisar JSON em PHP
Com a função json_last_error
pode-se descobrir exatamente qual erro
ocorreu durante a análise do JSON.
Vamos ver como isso
é feito. Suponha que temos um
JSON inválido:
<?php
$json = '["a", "b", "c",]';
?>
Vamos tentar analisá-lo:
<?php
$data = json_decode($json);
var_dump($data); // retornará null
?>
Como ocorreu um erro, json_last_error
ao ser chamada retornará o número desse erro:
<?php
$error = json_last_error();
var_dump($error); // número do erro
?>
O número retornado pode ser comparado com constantes especiais do PHP. Com base nisso, pode-se escrever um código que captura diferentes tipos de erros:
<?php
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo 'sem erros';
break;
case JSON_ERROR_DEPTH:
echo 'profundidade máxima da pilha atingida';
break;
case JSON_ERROR_STATE_MISMATCH:
echo 'modo inválido ou incompatibilidade de modos';
break;
case JSON_ERROR_CTRL_CHAR:
echo 'caractere de controle inválido';
break;
case JSON_ERROR_SYNTAX:
echo 'erro de sintaxe, JSON inválido';
break;
case JSON_ERROR_UTF8:
echo 'caracteres UTF-8 inválidos, possivelmente codificados incorretamente';
break;
default:
echo 'erro desconhecido';
break;
}
?>
Dada uma string com um determinado JSON. Analise-a em uma estrutura de dados PHP. Exiba o resultado da análise ou a razão do erro, se a análise do JSON falhar.