Часті питання про інструменти: дані, файли й експорт
Головне: Чи завантажуються дані, який файл працює, чи щось зберігається локально, чому китайський текст стає escape-послідовностями: десять питань, що промовляють справжні межі онлайн-інструменту JSON.

Коротко: розбір, форматування, diff і запити відбуваються цілком у вашому браузері й продовжують працювати офлайн; очищуйте історію localStorage після роботи з чутливими даними; і переходьте на потокові інструменти командного рядка понад 10 МБ, замість вставляти файл у браузер.
Перш ніж вставляти чутливе навантаження в онлайн-інструмент, знайте, куди воно йде. Ця стаття охоплює лише поведінку інструменту під час виконання, не синтаксис.
1. Дані й приватність
Чи завантажує онлайн-форматувальник JSON мої дані на сервер?
Ні. Розбір, форматування, мініфікація, diff і запити всі відбуваються в браузері, і сторінка ніколи не надсилає нічого, що ви вставили, на сервер застосунку.
Вам не треба читати заяву про приватність, щоб визначити, чи онлайн-інструмент завантажує дані; панелі мережі браузера достатньо:
- Відкрийте інструменти розробника, перемкніться на панель Network і ввімкніть збереження логу;
- Вставте трохи JSON і натисніть «Форматувати»;
- Стежте, чи з'являється новий XHR- або fetch-запит і чи його тіло містить ваш вміст.
Для справді локального інструменту цей крок показує лише запити статичних ресурсів. Навпаки, якщо одна дія форматування продукує POST /api/format,
чиє тіло — ваш оригінальний текст, то дані вже залишили браузер, хоч би що стверджувала сторінка.
Кожен інструмент цього сайту — суто фронтендна реалізація, і вивід збірки не містить серверного API. Після переходу офлайн перезавантаження, що влучає в кеш, усе ще працює, що також є найбезпосереднішим способом визначити, чи щось є «цілком локальним».
Чи можу я все ще користуватися ним офлайн?
Так, за умови, що сторінку завантажено хоча б раз.
Ресурси сайту завантажуються в кеш браузера під час першого візиту, тож навіть без мережі потім форматування, мініфікація, конвертація JSON5 і запити JSONPath продовжують працювати. Зазнають збою лише функції, залежні від мережі, як-от перевірка нової версії чи завантаження десктопного інсталятора.
Офлайн-тест так само добрий спосіб перевірити, що «дані ніколи не йдуть»: якщо все ламається в момент відключення, кожна дія зверталася до сервера.
Чи зберігаються якісь дані локально? Як їх очистити?
Так, але лише в localStorage поточного браузера, і лише історія та налаштування UI.
- Історія: останні 100 оброблених записів у зворотному хронологічному порядку, використовуються для відновлення попередньо вставлених даних;
- Налаштування UI: тема, мова, уподобання відступів тощо;
- Не зберігається: сам файл, записи завантажень чи будь-що, що несе ідентичність.
Є три способи очистити, від найвужчого до найширшого:
| Метод | Обсяг | Коли використовувати |
|---|---|---|
| «Очистити історію» на сторінці історії | Видаляє лише історію, зберігає налаштування | Після роботи з чутливими даними |
Виконати localStorage.clear() в інструментах розробника |
Усі локальні дані цього сайту | Діагностика ненормальних налаштувань |
| «Очистити дані перегляду» браузера для цього сайту | Кукі, кеш і сховище разом | Перед використанням спільного компʼютера |
Обробляючи виробничі дані на спільному компʼютері, очистіть історію після завершення, а не просто закривайте вкладку — localStorage не зникає, коли вкладка закривається.
Чому китайські символи перетворилися на \u4e2d\u6587?
Бо функція «escape» перетворює не-ASCII символи на escape-послідовності Unicode. Це навмисна поведінка, а не «кракозябри».
\u4e2d — кодова точка символу 中 (U+4E2D). Дві форми семантично ідентичні в JSON і розбираються в той самий рядок:
{
"escaped": "\u4e2d\u6587",
"plain": "中文"
}
Коли екранування потрібне? Коли вбудовуєте JSON у стару систему, що приймає лише ASCII, пишете його в заголовок HTTP або вкладаєте в інший рядок. Коли не потрібне? Більшість транспорту API й зберігання файлів його не потребують; зберігання китайського тексту безпосередньо як UTF-8 заощаджує байти — один китайський символ — це 3 байти, і 6 байтів після екранування.
Якщо бачите, що китайський текст перетворився на \u4e2d, спершу перевірте, чи ви натиснули кнопку «Escape», а не підозрюйте, що кодування зламане.
2. Файли й розмір
Який розмір файлу підтримується?
Жорсткого ліміту на боці браузера немає; справжні ліміти походять із трьох місць:
| Етап | Приблизне вузьке місце | Симптом |
|---|---|---|
| Вставлення в текстове поле | 1–5 МБ | Введення гальмує після вставлення, затримка курсора |
JSON.parse |
50–100 МБ | Головний потік блокується на секунди, сторінка не реагує |
| Відображення дерева | 10 тис.–20 тис. вузлів | Загублені кадри під час розгортання, прокрутка замерзає |
Інакше кажучи, файл на десятки МБ «можна розібрати», але він «непридатний». Коли вам справді треба обробити такі дані, правильний хід — не шукати сильніший онлайн-інструмент, а перейти на потокову обробку (дивіться Часті питання про продуктивність і безпеку).
Практичне правило: до 2 МБ онлайн-інструмент лишається плавним; 2–10 МБ означає прийняти затримку чи дві; понад 10 МБ надавайте перевагу локальному скрипту.
Браузер замерзає після вставлення. Що тепер?
Не перезавантажуйте спершу — перезавантаження втрачає вміст, і вам доведеться вставляти знову. Рятуйте в такому порядку:
- Зачекайте 10–30 секунд. У більшості випадків головний потік розбирає чи відображає й відновиться сам;
- Щойно відновиться, негайно перемкніться на вигляд «Мініфікація» або згорніть дерево, щоб зменшити DOM-вузли;
- Копіюйте вміст у локальний файл і перемкніться на командний рядок:
# Подивіться на структуру лише перших 100 рядків, щоб не завантажувати все
head -c 200000 data.json | jq . | head -n 100
# Порахуйте записи потоковим інструментом, не завантажуючи їх у памʼять
jq -c '.items[]' data.json | wc -l
Наступного разу, натрапивши на великий файл, спершу запустіть wc -c, щоб побачити кількість байтів, а потім вирішуйте, чи вставляти його в браузер.
Чому форматування не змінилося після вставлення?
Три поширені причини, за частотою:
- Вхід уже мініфікований і не має синтаксичних помилок: форматування лише коригує відступи, тож якщо оригінал справді два рядки, він усе одно буде два рядки потому — переведення рядка всередині рядків не розгортаються;
- Вміст не є JSON: наприклад, ви вставили обʼєктний літерал JavaScript (ключі без лапок, одинарні лапки), і парсер повідомляє про помилку замість форматування;
- Ви натиснули не ту кнопку: мініфікація й форматування йдуть у протилежних напрямках, а мініфікація знімає всі відступи.
Як визначити: подивіться на кількість символів у правому верхньому куті області виводу. Після форматування кількість має зрости (зайві відступи й переведення рядків); якщо вона зменшилася, ви запустили мініфікацію.
3. Вхід і вивід
Як експортувати результат у файл?
Три способи, за надійністю:
| Метод | Дія | Коли використовувати |
|---|---|---|
| Кнопка завантаження | Натисніть «Завантажити», щоб отримати файл .json |
Великі результати, які треба архівувати |
| Копіювання в буфер | Натисніть «Копіювати» | Малі результати, які ви вставляєте прямо назад у код |
| Ручне виділення й копіювання | Виділіть область виводу й натисніть Ctrl/Cmd + C |
Запасний варіант, коли кнопка копіювання зазнає збою |
Завантажений файл типово в кодуванні UTF-8 без BOM. Це важливо: JSON із BOM ламається безпосередньо в багатьох парсерах (дивіться розділ про BOM у Частих питаннях про синтаксис і формати).
Чи підтримуються JSON5 і JSONC?
Так, але розрізняйте «розбір» і «вивід».
- На боці входу ви можете вставити JSON5 (одинарні лапки, ключі без лапок, коментарі, висячі коми, шістнадцяткові числа) або JSONC (лише коментарі);
- На боці виводу ви можете конвертувати в стандартний JSON або конвертувати стандартний JSON назад у JSON5, щоб полегшити ручне редагування.
Завжди видавайте стандартний JSON, перетинаючи системи. JSON5 — діалект для людей, що пишуть конфігурацію; тіло запиту з
Content-Type: application/json, що містить коментарі чи висячі коми, зазвичай відхиляється сервером.
4. Середовище й сумісність
Чи працює на телефоні?
Так. Інтерфейс переливається в один стовпець, а форматування, мініфікація, diff і JSONPath усі зберігаються.
Але обробка великих файлів на телефоні — поганий досвід: екранна клавіатура закриває вміст, виділення тексту важке, а браузер може відкинути сторінку під час перемикання застосунків, втративши ваш вміст. Прийнятно як аварійний варіант, але щодня робіть це на десктопі.
Чому той самий файл відкривається в Chrome, але дає помилку в Safari?
Зазвичай це не різниця браузерів, а різниця кодування. Налагоджуйте в такому порядку:
- BOM: UTF-8, збережений Windows Notepad, містить BOM, який деякі парсери не терплять;
- Закінчення рядків: змішування CRLF і LF не впливає на сам JSON, але зсуває повідомлені номери рядків помилки, тож виглядає як «неправильна позиція помилки»;
- Невидимі символи: текст, копійований зі сторінки, може містити пробіли нульової ширини (U+200B), невидимі для ока, але достатні, щоб зламати зіставлення ключів.
Одна команда це розкриває:
# Подивіться на шістнадцятковий вигляд перших 16 байтів; провідний EF BB BF означає наявність BOM
head -c 16 data.json | xxd
5. Стислий довідник
| Питання | Висновок |
|---|---|
| Чи завантажує дані | Ні, усе обробляється локально в браузері, і працює офлайн |
| Де зберігаються дані | localStorage, лише історія й налаштування, ніколи файли |
| Який розмір файлу розумний | Плавно до 2 МБ; понад 10 МБ переходьте на командний рядок |
Китайський текст став \u |
Ви натиснули escape; еквівалентно, але об'ємніше й зазвичай непотрібно |
| Воно замерзло, що тепер | Дочекайтеся відновлення → згорніть дерево → копіюйте й використовуйте jq |
| Чи експорт без BOM | Так, UTF-8 без BOM |
| Чи підтримуються коментарі | JSON5/JSONC на боці входу; видавайте стандартний JSON |