Chyby parsera pri analýze JSON v PHP
Pomocou funkcie json_last_error
môžete zistiť, aká konkrétna chyba
nastala počas parsovania JSON.
Pozrime sa, ako sa to
robí. Predpokladajme, že máme
nekorektný JSON:
<?php
$json = '["a", "b", "c",]';
?>
Skúsme ho analyzovať:
<?php
$data = json_decode($json);
var_dump($data); // vypíše null
?>
Keďže nastala chyba, json_last_error
pri volaní vráti číslo tejto chyby:
<?php
$error = json_last_error();
var_dump($error); // číslo chyby
?>
Vrátené číslo je možné porovnávať so špeciálnymi konštantami PHP. Na základe toho je možné napísať kód, ktorý zachytáva rôzne typy chýb:
<?php
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo 'žiadne chyby';
break;
case JSON_ERROR_DEPTH:
echo 'dosiahnutá maximálna hĺbka zásobníka';
break;
case JSON_ERROR_STATE_MISMATCH:
echo 'nekorektné bity alebo nezhoda režimov';
break;
case JSON_ERROR_CTRL_CHAR:
echo 'nekorektný riadiaci znak';
break;
case JSON_ERROR_SYNTAX:
echo 'syntaktická chyba, nekorektný JSON';
break;
case JSON_ERROR_UTF8:
echo 'nekorektné znaky UTF-8, pravdepodobne nesprávne zakódované';
break;
default:
echo 'neznáma chyba';
break;
}
?>
Daný reťazec s nejakým JSON. Analyzujte ho do dátovej štruktúry PHP. Vypíšte výsledok analýzy alebo dôvod chyby, ak sa analyzovať JSON nepodarilo.