Úvod >PHP >PHP manuál - funkce >json_last_error

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()