(PHP 5 >= 5.3.0, PHP 7, PHP 8)
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, das JSON_THROW_ON_ERROR
nicht angab, aufgetreten ist.
Diese Funktion besitzt 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 | |
JSON_ERROR_RECURSION | Eine oder mehrere rekursive Referenzen im zu kodierenden Wert | |
JSON_ERROR_INF_OR_NAN | Eine oder mehrere NAN oder INF Werte im zu kodierenden Wert | |
JSON_ERROR_UNSUPPORTED_TYPE | Ein Wert eines Typs, der nicht kodiert werden kann, wurde übergeben | |
JSON_ERROR_INVALID_PROPERTY_NAME | Ein Eigenschaftsname, der nicht kodiert werden kann, wurde übergeben | |
JSON_ERROR_UTF16 | Deformierte UTF-16 Zeichen; möglicherweise fehlerhaft kodiert |
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)
Beispiel #3 json_last_error() und JSON_THROW_ON_ERROR
<?php
// Eine ungültige UTF8 Sequenz, die ein JSON_ERROR_UTF8 verursacht
json_encode("\xB1\x31");
// Das folgende verursacht keinen JSON Fehler
json_encode('okay', JSON_THROW_ON_ERROR);
// Der globale Fehlerzustand wurde durch das vorherige json_encode nicht geändert
var_dump(json_last_error() === JSON_ERROR_UTF8);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
bool(true)