JSON форматування
Перевірити, відформатувати або стиснути JSON
Дані не залишають ваш браузер
Цей інструмент повністю працює на вашому пристрої: обчислення виконує JavaScript у вкладці. Ми не надсилаємо введений текст на сервер, не зберігаємо і не логуємо його. Можете сміливо працювати з робочими даними - і навіть відключити інтернет після завантаження сторінки.
JSON коректний
Навіщо форматувати JSON
Стиснутий JSON з логу чи відповіді API - це один довгий рядок, у якому неможливо знайти потрібне поле. Форматування розставляє відступи й переноси, і структура стає видимою. Зворотна операція - мініфікація - прибирає все зайве перед відправкою.
Друга, важливіша функція - перевірка. Якщо JSON зламаний, інструмент покаже, у якому місці, а не просто скаже «помилка».
Типові помилки, які тут видно одразу
- Кома після останнього елемента -
{"a": 1,}. У JavaScript це дозволено, у JSON - ні. - Одинарні лапки -
{'a': 1}. JSON визнає лише подвійні. - Ключ без лапок -
{a: 1}. Це об'єкт JavaScript, а не JSON. - Коментарі - у JSON їх немає взагалі.
NaNабоInfinity- не існують у специфікації.
Робота з JSON у PHP
// Декодування в асоціативний масив
$data = json_decode($json, true);
// Мовчазний null при помилці - джерело важковловимих багів.
// Краще одразу вимагати виняток:
$data = json_decode($json, true, flags: JSON_THROW_ON_ERROR);
// Кодування: два прапорці, без яких результат буде некрасивим
json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
Готовий масив можна одразу перетворити на PHP.
JSON_UNESCAPED_UNICODE критичний для української. Без нього «Привіт» перетворюється на Привіт - валідно, але нечитабельно і втричі більше за розміром.
У Laravel
// Відповідь API: Laravel серіалізує сам
return response()->json($user);
// Каст поля в моделі - працює як масив, зберігається як JSON
protected function casts(): array
{
return ['settings' => 'array'];
}
// Запити всередину JSON-колонки (MySQL, PostgreSQL)
User::where('settings->theme', 'dark')->get();
User::whereJsonContains('settings->roles', 'admin')->get();
// Валідація JSON-рядка, що приходить у полі
$request->validate(['payload' => ['required', 'json']]);
Велика відповідь
Якщо JSON важить десятки мегабайтів, json_decode() підніме його в пам'ять цілком. Для таких випадків потрібен потоковий парсер, а не цей інструмент - тут усе обробляється у вашій вкладці, і дуже великий вміст просто підвісить браузер.