Práce s JSON
Nette\Utils\Json je statická třída s funkcemi pro kódování a dekódování formátu JSON. Ošetřuje zranitelnosti různých verzí PHP a vyhazuje výjimky při chybách.
Instalace:
composer require nette/utils
Všechny příklady předpokládají vytvořený alias:
use Nette\Utils\Json;
Použití
encode (mixed $value, int $flags=0): string
Převádí $value
do formátu JSON. Příznak $flag
může být Json::PRETTY
, který
naformátuje JSON pro snažší čtení a přehlednost, a Json::ESCAPE_UNICODE
, který zajistí výstup v ASCII.
Json::encode($value); // vrací JSON
Json::encode($value, Json::PRETTY); // vrací přehlednější JSON
Json::encode($value, Json::PRETTY | Json::ESCAPE_UNICODE); // kombinace
Při chybě vyhazuje výjimku Nette\Utils\JsonException
.
try {
$json = Json::encode($value);
} catch (Nette\Utils\JsonException $e) {
// Ošetření výjimky
}
decode (string $json, int $flags=0): mixed
Parsuje JSON do PHP. Příznak $flag
může být Json::FORCE_ARRAY
, který vynutí vrácení pole
místo objektu.
Json::decode('{"variable": true}'); // vrací objekt typu stdClass
Json::decode('{"variable": true}', Json::FORCE_ARRAY); // vrací pole
Json::decode('true'); // vrací true
Při chybě vyhazuje výjimku Nette\Utils\JsonException
.
try {
$value = Json::decode($json);
} catch (Nette\Utils\JsonException $e) {
// Ošetření výjimky
}
Jak odeslat JSON z presenteru?
Lze k tomu použít metodu $this->sendJson($data)
, kterou můžeme zavolat třeba v metodě
action*()
, viz Odeslání
odpovědi.