Nette Documentation Preview

syntax
Práce s JSON
************

.[perex]
[api: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:

```shell
composer require nette/utils
```

Všechny příklady předpokládají vytvořený alias:

```php
use Nette\Utils\Json;
```


Použití
=======


encode(mixed $value, int $flags=0): string .[method]
----------------------------------------------------

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.

```php
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`.

```php
try {
	$json = Json::encode($value);
} catch (Nette\Utils\JsonException $e) {
	// Ošetření výjimky
}
```


decode(string $json, int $flags=0): mixed .[method]
---------------------------------------------------

Parsuje JSON do PHP. Příznak `$flag` může být `Json::FORCE_ARRAY`, který vynutí vrácení pole místo objektu.

```php
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`.

```php
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|application:presenters#Odeslání odpovědi].

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.