(PHP 5 >= 5.3.0)
json_last_error — Gibt den letzten aufgetretenen Fehler zurück
Gibt (sofern vorhanden) den letzten Fehler zurück, der beim letzten Parsen von JSON aufgetreten ist.
Diese Funktion hat keine Parameter.
Gibt einen Integer zurück, der Wert kann eine der folgenden Konstanten sein:
Konstante | Bedeutung |
---|---|
JSON_ERROR_NONE | Kein Fehler aufgetreten. |
JSON_ERROR_DEPTH | Die maximale Stacktiefe wurde überschritten. |
JSON_ERROR_CTRL_CHAR | Steuerzeichenfehler, möglicherweise unkorrekt kodiert. |
JSON_ERROR_SYNTAX | Syntaxfehler. |
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_DEPTH:
echo ' - Maximale Stacktiefe überschritten';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unerwartetes Steuerzeichen gefunden';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntaxfehler, ungültiges JSON';
break;
case JSON_ERROR_NONE:
echo ' - Keine 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
For those of you who prefer a more object oriented approach (as I do), here is a fairly simple wrapper that handles errors using exceptions:
<?php
class JSON
{
public static function Encode($obj)
{
return json_encode($obj);
}
public static function Decode($json, $toAssoc = false)
{
$result = json_decode($json, $toAssoc);
switch(json_last_error())
{
case JSON_ERROR_DEPTH:
$error = ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_CTRL_CHAR:
$error = ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
$error = ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_NONE:
default:
$error = '';
}
if (!empty($error))
throw new Exception('JSON Error: '.$error);
return $result;
}
}
?>