mirror of
https://github.com/avecms/AVE.cms.git
synced 2026-08-01 00:45:44 +00:00
2.5 KiB
2.5 KiB
Json — JSON
App\Helpers\Json — безопасные encode/decode с разумными дефолтами и поддержкой
кириллицы.
use App\Helpers\Json;
Кодирование
encode($data, $flags = 0)
Обычное кодирование.
payload($value, $flags = JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES)
Кодирование «для API»: читаемая кириллица, слеши не экранируются. Возвращает
null для пустых значений (null, '', []) — удобно, чтобы не гонять пустоту.
echo Json::payload(['title' => 'Кресло', 'price' => 100]);
// {"title":"Кресло","price":100} ← без \u04..
Json::payload([]); // null
Декодирование
decode($json, $assoc = true)
По умолчанию — в массив; $assoc = false — в объект.
$data = Json::decode($raw); // массив
$obj = Json::decode($raw, false); // объект
toArray($value, array $default = [])
Гарантированно массив: если уже массив — вернёт как есть, если строка — распарсит,
при ошибке — $default. Идеально для JSON-полей БД.
$settings = Json::toArray($row['settings']); // всегда массив
$tags = Json::toArray($row['tags'], ['default']);
Вспомогательное
| Метод | Назначение |
|---|---|
show(array $array, $shutdown = false, $cyrillic = false) |
Вывести JSON (и опц. завершить запрос). |
cyrillic($data) |
Привести экранированную кириллицу к читаемой. |
fix($json) |
Попытка «починить» кривой JSON (одинарные кавычки, мусор). |
$data = Json::decode(Json::fix($messyJson)); // last resort для «грязного» входа
Рецепты
Чтение JSON-настроек из строки БД без падений:
$config = Json::toArray($row['config']);
$perPage = isset($config['per_page']) ? (int) $config['per_page'] : 25;
Для полноценного HTTP-ответа удобнее Response::json() — он ставит заголовки и код.
Json— про сериализацию как таковую.