Błędy parsera podczas analizy JSON w PHP
Za pomocą funkcji json_last_error
można dowiedzieć się, jaki dokładnie błąd
wystąpił podczas parsowania JSON.
Spójrzmy, jak to się
robi. Załóżmy, że mamy
nieprawidłowy JSON:
<?php
$json = '["a", "b", "c",]';
?>
Spróbujmy go przeanalizować:
<?php
$data = json_decode($json);
var_dump($data); // wypisze null
?>
Ponieważ wystąpił błąd, to json_last_error
przy wywołaniu zwróci numer tego błędu:
<?php
$error = json_last_error();
var_dump($error); // numer błędu
?>
Zwracany numer można porównywać ze specjalnymi stałymi PHP. Na tej podstawie można napisać kod, wychwytujący różne typy błędów:
<?php
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo 'brak błędów';
break;
case JSON_ERROR_DEPTH:
echo 'osiągnięto maksymalną głębokość stosu';
break;
case JSON_ERROR_STATE_MISMATCH:
echo 'nieprawidłowe bity lub niezgodność trybów';
break;
case JSON_ERROR_CTRL_CHAR:
echo 'nieprawidłowy znak kontrolny';
break;
case JSON_ERROR_SYNTAX:
echo 'błąd składniowy, nieprawidłowy JSON';
break;
case JSON_ERROR_UTF8:
echo 'nieprawidłowe znaki UTF-8, możliwe nieprawidłowe kodowanie';
break;
default:
echo 'nieznany błąd';
break;
}
?>
Dany jest ciąg znaków z pewnym JSON. Przeanalizuj go do struktury danych PHP. Wypisz wynik analizy lub przyczynę błędu, jeśli przeanalizowanie JSON się nie powiodło.