json_last_error
json_last_error()
Vrátí kód chyby posledního volání json_decode() nebo json_encode(). JSON_ERROR_NONE (0) znamená bez chyby.
Příklady
// null jako platný JSON a null jako chyba vypadají stejně
var_dump(json_decode("null")); // NULL
var_dump(json_last_error() === JSON_ERROR_NONE); // bool(true)
var_dump(json_decode("{nesmysl")); // NULL
var_dump(json_last_error() === JSON_ERROR_SYNTAX); // bool(true)
echo json_last_error(); // 4
// neplatné UTF-8 při kódování
var_dump(json_encode("a\xC3")); // bool(false)
var_dump(json_last_error() === JSON_ERROR_UTF8); // bool(true)
// místo kontroly kódu výjimka (od PHP 7.3)
try {
json_decode("{nesmysl", true, 512, JSON_THROW_ON_ERROR);
} catch (JsonException $e) {
echo $e->getMessage(); // Syntax error
}
Na co si dát pozor
- json_decode() vrací null při chybě i pro platný JSON „null“. Jestli šlo o chybu, pozná až json_last_error().
- Kód platí jen pro poslední volání json_decode() nebo json_encode(). Další úspěšné volání ho přepíše na 0.
- Volání s JSON_THROW_ON_ERROR (od PHP 7.3) při chybě vyhodí JsonException a stav pro json_last_error() nemění. Kód s výjimkou je přehlednější.
- Prázdný řetězec není platný JSON a vrátí chybu syntaxe.
Příbuzné funkce:
json_last_error_msg()
json_decode()
json_encode()