Chyby parseru při analýze JSON v PHP
Pomocí funkce json_last_error
lze zjistit, jaká konkrétní chyba
nastala při parsování JSON.
Podívejme se, jak se to
dělá. Předpokládejme, že máme
neplatný JSON:
<?php
$json = '["a", "b", "c",]';
?>
Zkusme jej analyzovat:
<?php
$data = json_decode($json);
var_dump($data); // vypíše null
?>
Protože došlo k chybě, json_last_error
při volání vrátí číslo této chyby:
<?php
$error = json_last_error();
var_dump($error); // číslo chyby
?>
Vrácené číslo lze porovnávat se speciálními konstantami PHP. Na základě toho lze napsat kód, který zachytává různé typy chyb:
<?php
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo 'žádné chyby';
break;
case JSON_ERROR_DEPTH:
echo 'byla dosažena maximální hloubka zásobníku';
break;
case JSON_ERROR_STATE_MISMATCH:
echo 'neplatné bity nebo nesoulad režimů';
break;
case JSON_ERROR_CTRL_CHAR:
echo 'neplatný řídicí znak';
break;
case JSON_ERROR_SYNTAX:
echo 'syntaktická chyba, neplatný JSON';
break;
case JSON_ERROR_UTF8:
echo 'neplatné znaky UTF-8, pravděpodobně chybně zakódováno';
break;
default:
echo 'neznámá chyba';
break;
}
?>
Je dáno řetězec s nějakým JSON. Analyzujte jej do struktury dat PHP. Vypište výsledek analýzy nebo důvod chyby, pokud se analyzovat JSON nepodařilo.