JSON Functions
Nette\Utils\Json is a static class with JSON encoding and decoding functions. It handles vulnerabilities in different PHP versions and throws exceptions on errors.
Installation:
composer require nette/utils
All examples assume the following class alias is defined:
use Nette\Utils\Json;
Usage
encode (mixed $value, int $flags=0): string
Converts $value
to JSON format. The flag can be Json::PRETTY
, which formats JSON for easier reading
and clarity, and Json::ESCAPE_UNICODE
for ASCII output.
Json::encode($value); // returns JSON
Json::encode($value, Json::PRETTY); // returns readable JSON
Json::encode($value, Json::PRETTY | Json::ESCAPE_UNICODE); // combination
It throws an Nette\Utils\JsonException
exception on error.
try {
$json = Json::encode($value);
} catch (Nette\Utils\JsonException $e) {
// Exception handling
}
decode (string $json, int $flags=0): mixed
Parses JSON to PHP value. The flag can be Json::FORCE_ARRAY
, which forces an array instead of an object as the
return value.
Json::decode('{"variable": true}'); // returns an object of stdClass
Json::decode('{"variable": true}', Json::FORCE_ARRAY); // returns an array
Json::decode('true'); // return true
It throws an Nette\Utils\JsonException
exception on error.
try {
$value = Json::decode($json);
} catch (Nette\Utils\JsonException $e) {
// Exception handling
}
How to Send a JSON from a Presenter?
You can use the $this->sendJson($data)
method, which can be called, for example, in the action*()
method, see Sending a Response.