json_last_error
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
json_last_error — Gibt den letzten aufgetretenen Fehler zurück
Beschreibung
Gibt (sofern vorhanden) den letzten Fehler zurück, der beim letzten Kodieren/Dekodieren
von JSON, das JSON_THROW_ON_ERROR
nicht angab, aufgetreten ist.
Parameter-Liste
Diese Funktion besitzt keine Parameter.
Rückgabewerte
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 |
Beispiele
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)
Siehe auch
- json_last_error_msg() - Liefert die Fehlermeldung des letzten Aufrufs von json_encode() oder json_decode()
- json_decode() - Dekodiert eine JSON-Zeichenkette
- json_encode() - Liefert die JSON-Darstellung eines Wertes