Parserfouten bij het ontleden van JSON in PHP
Met de functie json_last_error
kun je achterhalen welke specifieke fout
er is opgetreden bij het ontleden van JSON.
Laten we eens kijken hoe dit
werkt. Stel we hebben
ongeldige JSON:
<?php
$json = '["a", "b", "c",]';
?>
Laten we proberen deze te ontleden:
<?php
$data = json_decode($json);
var_dump($data); // geeft null weer
?>
Omdat er een fout optrad, zal json_last_error
bij aanroep het nummer van deze fout teruggeven:
<?php
$error = json_last_error();
var_dump($error); // foutnummer
?>
Het teruggegeven nummer kan vergeleken worden met speciale PHP-constanten. Op basis hiervan kan code geschreven worden die verschillende soorten fouten opvangt:
<?php
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo 'geen fouten';
break;
case JSON_ERROR_DEPTH:
echo 'maximale stackdiepte bereikt';
break;
case JSON_ERROR_STATE_MISMATCH:
echo 'ongeldige bits of modus mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo 'ongeldig controlekarakter';
break;
case JSON_ERROR_SYNTAX:
echo 'syntactische fout, ongeldige JSON';
break;
case JSON_ERROR_UTF8:
echo 'ongeldige UTF-8 karakters, mogelijk verkeerd gecodeerd';
break;
default:
echo 'onbekende fout';
break;
}
?>
Gegeven een string met een bepaalde JSON. Ontleed deze naar een PHP-datastructuur. Toon het resultaat van de ontleding of de reden van de fout, als het ontleden van de JSON niet lukte.