Хатогиҳои таҷзеҳкунанда дар таҷзеҳи JSON дар PHP
Бо ёрии функсияи 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 муяссар нагардад.