(PHP 5 >= 5.3.0, PHP 7)
json_last_error — Gibt den letzten aufgetretenen Fehler zurück
Gibt (sofern vorhanden) den letzten Fehler zurück, der beim letzten Kodieren/Dekodieren von JSON aufgetreten ist.
Diese Funktion hat keine Parameter.
Gibt einen Integer zurück, der Wert kann eine der folgenden Konstanten sein:
Konstante | Bedeutung | Verfügbarkeit |
---|---|---|
JSON_ERROR_NONE |
Kein Fehler aufgetreten. | |
JSON_ERROR_DEPTH |
Die maximale Stacktiefe wurde überschritten. | |
JSON_ERROR_STATE_MISMATCH |
Ungültiges oder missgestaltetes JSON | |
JSON_ERROR_CTRL_CHAR |
Steuerzeichenfehler, möglicherweise unkorrekt kodiert. | |
JSON_ERROR_SYNTAX |
Syntaxfehler. | |
JSON_ERROR_UTF8 |
Missgestaltete UTF-8 Zeichen, möglicherweise fehlerhaft kodiert | PHP 5.3.3 |
JSON_ERROR_RECURSION |
Eine oder mehrere rekursive Referenzen im zu kodierenden Wert | PHP 5.5.0 |
JSON_ERROR_INF_OR_NAN |
Eine oder mehrere
NAN
oder INF
Werte im zu kodierenden Wert
|
PHP 5.5.0 |
JSON_ERROR_UNSUPPORTED_TYPE |
Ein Wert eines Typs, der nicht kodiert werden kann, wurde übergeben | PHP 5.5.0 |
Beispiel #1 json_last_error()-Beispiel
<?php
// Ein gültiger JSON-String
$json[] = '{"Organisation": "PHP-Dokumentationsteam"}';
// Ein ungültiger JSON-String, der einen Syntaxfehler hervorruft,
// in diesem Fall werden ' anstelle von " als Anführungszeichen verwendet
$json[] = "{'Organisation': 'PHP-Dokumentationsteam'}";
foreach($json as $string) {
echo 'Dekodiere: ' . $string;
json_decode($string);
switch(json_last_error()) {
case JSON_ERROR_NONE:
echo ' - Keine Fehler';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximale Stacktiefe überschritten';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Unterlauf oder Nichtübereinstimmung der Modi';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unerwartetes Steuerzeichen gefunden';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntaxfehler, ungültiges JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Missgestaltete UTF-8 Zeichen, möglicherweise fehlerhaft kodiert';
break;
default:
echo ' - Unbekannter Fehler';
break;
}
echo PHP_EOL;
}
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Decoding: {"Organisation": "PHP-Dokumentationsteam"} - Keine Fehler Decoding: {'Organisation': 'PHP-Dokumentationsteam'} - Syntaxfehler, ungültiges JSON
Beispiel #2 json_last_error() mit json_encode()
<?php
// Eine ungültige UTF8 Sequenz
$text = "\xB1\x31";
$json = json_encode($text);
$error = json_last_error();
var_dump($json, $error === JSON_ERROR_UTF8);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
string(4) "null" bool(true)