JSON:n jäsentämisen virheet PHP:ssä

Funktiolla json_last_error voidaan selvittää, mikä virhe tapahtui JSON:ia jäsentäessä. Katsotaanpa, miten tämä tehdään. Oletetaan, että meillä on virheellinen JSON:

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

Yritetään jäsentää se:

php<?php
  $data = json_decode($json);
  var_dump($data); // tulostaa null
?>

Koska tapahtui virhe, json_last_error palauttaa kutsuttaessa tämän virheen numeron:

php<?php
  $error = json_last_error();
  var_dump($error); // virheen numero
?>

Palautettua numeroa voidaan verrata PHP:n erikoiskonstantteihin. Tämän perusteella voidaan kirjoittaa koodi, joka sieppaa erityyppisiä virheitä:

php<?php
   switch (json_last_error()) {
    case JSON_ERROR_NONE:
      echo 'ei virheitä';
    break;
    case JSON_ERROR_DEPTH:
      echo 'pinon enimmäissyvyys saavutettu';
    break;
    case JSON_ERROR_STATE_MISMATCH:
      echo 'virheelliset tilat tai tilojen vastaavuus';
    break;
    case JSON_ERROR_CTRL_CHAR:
      echo 'virheellinen ohjausmerkki';
    break;
    case JSON_ERROR_SYNTAX:
      echo 'syntaksivirhe, virheellinen JSON';
    break;
    case JSON_ERROR_UTF8:
      echo 'virheelliset UTF-8-merkit, mahdollisesti väärin koodattu';
    break;
    default:
      echo 'tuntematon virhe';
    break;
  }
?>
Задание 1

Annettu merkkijono, joka sisältää JSON:ia. Jäsennä se PHP:n tietorakenteeksi. Tulosta jäsennystulos tai virheen syy, jos JSON:in jäsentäminen epäonnistui.