Грешки на парсера при анализ на 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 не успее.