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
$json = '["a", "b", "c",]';
?>
Yritetään jäsentää se:
<?php
$data = json_decode($json);
var_dump($data); // tulostaa null
?>
Koska tapahtui virhe, json_last_error
palauttaa kutsuttaessa tämän virheen numeron:
<?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
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;
}
?>
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.