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

json_validate

json_validate($json, $hloubka, $priznaky)

Ověří, že řetězec je platný JSON, a vrátí true nebo false. Data přitom nesestavuje, proto u velkých dokumentů šetří paměť. Funkce je od PHP 8.3.

Parametry

  • $json – ověřovaný řetězec.
  • $hloubka – nepovinný, nejvyšší povolené vnoření. Výchozí 512.
  • $priznaky – nepovinný, jediný povolený je JSON_INVALID_UTF8_IGNORE.

Příklady

var_dump(json_validate('{"jmeno": "Jana", "vek": 30}')); // bool(true)
var_dump(json_validate('{"jmeno": "Jana",}')); // bool(false)
var_dump(json_validate("")); // bool(false)
var_dump(json_validate("null")); // bool(true)
// důvod chyby
json_validate("{jmeno: 1}");
echo json_last_error_msg(); // Syntax error
// hloubka vnoření
var_dump(json_validate("[[[1]]]", 2)); // bool(false)
echo json_last_error_msg(); // Maximum stack depth exceeded

Náhrada pro starší PHP

Ve verzích starších než PHP 8.3 funkce není. Následující kód ji doplní jen tam, kde chybí, v novějších verzích se použije vestavěná funkce.

if (!function_exists("json_validate")) {
    function json_validate($json, $hloubka = 512) {
        json_decode($json, false, $hloubka);
        return json_last_error() === JSON_ERROR_NONE;
    }
}
var_dump(json_validate('{"jmeno": "Jana"}')); // bool(true)
var_dump(json_validate("null")); // bool(true)
var_dump(json_validate("")); // bool(false)

Na co si dát pozor

  • Když data stejně potřebujete, json_validate() nevolejte. Rovnou použijte json_decode() a zkontrolujte chybu, jinak se JSON zpracuje dvakrát.
  • "null" je platný JSON. Kontrola výsledku json_decode() === null ho od chyby neodliší, json_validate() ano.
  • Jiný příznak než JSON_INVALID_UTF8_IGNORE vyhodí ValueError.
  • Náhrada pro starší PHP data sestaví, paměť tedy neušetří.

Příbuzné funkce:
json_decode()
json_last_error()
json_last_error_msg()
json_encode()