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.

verze: 4.0 3.x 2.x