Chyby parseru při analýze JSON v PHP

Pomocí funkce json_last_error lze zjistit, jaká konkrétní chyba nastala při parsování JSON. Podívejme se, jak se to dělá. Předpokládejme, že máme neplatný JSON:

php<?php
  $json = '["a", "b", "c",]';
?>

Zkusme jej analyzovat:

php<?php
  $data = json_decode($json);
  var_dump($data); // vypíše null
?>

Protože došlo k chybě, json_last_error při volání vrátí číslo této chyby:

php<?php
  $error = json_last_error();
  var_dump($error); // číslo chyby
?>

Vrácené číslo lze porovnávat se speciálními konstantami PHP. Na základě toho lze napsat kód, který zachytává různé typy chyb:

php<?php
   switch (json_last_error()) {
    case JSON_ERROR_NONE:
      echo 'žádné chyby';
    break;
    case JSON_ERROR_DEPTH:
      echo 'byla dosažena maximální hloubka zásobníku';
    break;
    case JSON_ERROR_STATE_MISMATCH:
      echo 'neplatné bity nebo nesoulad režimů';
    break;
    case JSON_ERROR_CTRL_CHAR:
      echo 'neplatný řídicí znak';
    break;
    case JSON_ERROR_SYNTAX:
      echo 'syntaktická chyba, neplatný JSON';
    break;
    case JSON_ERROR_UTF8:
      echo 'neplatné znaky UTF-8, pravděpodobně chybně zakódováno';
    break;
    default:
      echo 'neznámá chyba';
    break;
  }
?>
Задание 1

Je dáno řetězec s nějakým JSON. Analyzujte jej do struktury dat PHP. Vypište výsledek analýzy nebo důvod chyby, pokud se analyzovat JSON nepodařilo.