JSON elemzési hibák a PHP-ban
A json_last_error függvény segítségével
megtudhatjuk, hogy pontosan milyen hiba
történt a JSON elemzése során.
Nézzük meg, hogyan kell ezt
megtenni. Tegyük fel, hogy van egy
helytelen JSON-unk:
<?php
$json = '["a", "b", "c",]';
?>
Próbáljuk meg elemezni:
<?php
$data = json_decode($json);
var_dump($data); // kiírja null-t
?>
Mivel hiba történt, a json_last_error
hívásakor kiadja a hiba számát:
<?php
$error = json_last_error();
var_dump($error); // hiba száma
?>
A visszaadott számot össze lehet hasonlítani PHP speciális konstansaival. Ennek alapján írhatunk olyan kódot, amely elkapja a különböző típusú hibákat:
<?php
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo 'nincsenek hibák';
break;
case JSON_ERROR_DEPTH:
echo 'elérte a verem maximális mélységét';
break;
case JSON_ERROR_STATE_MISMATCH:
echo 'helytelen bitek vagy mód eltérés';
break;
case JSON_ERROR_CTRL_CHAR:
echo 'érvénytelen vezérlőkarakter';
break;
case JSON_ERROR_SYNTAX:
echo 'szintaktikai hiba, érvénytelen JSON';
break;
case JSON_ERROR_UTF8:
echo 'érvénytelen UTF-8 karakterek, esetleg helytelenül kódolt';
break;
default:
echo 'ismeretlen hiba';
break;
}
?>
Adott egy string valamilyen JSON-nel. Elemezd azt PHP adatszerkezetté. Írd ki az elemzés eredményét vagy a hiba okát, ha a JSON elemzése sikertelen volt.