PHPда JSONни таҳлил қилишда парсер хатолари
json_last_error функцияси ёрдамида
JSONни таҳлил қилишда айнан қандай хатолик
юз берганини аниқлаш мумкин.
Келинг, буни қандай амалга
опиришни кўрамиз. Бизда нотўғри
JSON мавжуд деб фараз қилайлик:
<?php
$json = '["a", "b", "c",]';
?>
Келинг, уни таҳлил қилишга ҳаракат қилайлик:
<?php
$data = json_decode($json);
var_dump($data); // null ни кўрсатади
?>
Хатолик юз бергани сабабли, json_last_error
чақирилганида ушбу хатоликнинг рақамини кўрсатади:
<?php
$error = json_last_error();
var_dump($error); // хатолик рақами
?>
Қайтарилаётган рақамни PHPнинг махус константлари билан солиштириш мумкин. Шуга асосланган ҳолда турли хил хатолик турларини ушлаб оладиган код ёзиш мумкин:
<?php
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo 'хатолик йўқ';
break;
case JSON_ERROR_DEPTH:
echo 'стекнинг максимал чуқурлигига еришилди';
break;
case JSON_ERROR_STATE_MISMATCH:
echo 'нотўғри разрядлар ёки режимлар мос келмаслиги';
break;
case JSON_ERROR_CTRL_CHAR:
echo 'нотўғри бошқарув симболи';
break;
case JSON_ERROR_SYNTAX:
echo 'синтактик хатолик, нотўғри JSON';
break;
case JSON_ERROR_UTF8:
echo 'нотўғри UTF-8 символлар, эҳтимол нотўғри кодланган';
break;
default:
echo 'номаълум хатолик';
break;
}
?>
Бирор JSON билан сатр берилган. Уни PHP маълумотлар тузилимига таҳлил қилинг. Агар JSONни таҳлил қилиш мумкин бўлмаса, таҳлил натижасини ёки хатолик сабабини чиқаринг.