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 and requirements

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.