JSON Toolkit

Часті питання про інструменти: дані, файли й експорт

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

Початковий~10 хв читанняОпубліковано 2026-10-30Оновлено 2026-10-30
Обкладинка частих питань про використання інструментів

Коротко: розбір, форматування, diff і запити відбуваються цілком у вашому браузері й продовжують працювати офлайн; очищуйте історію localStorage після роботи з чутливими даними; і переходьте на потокові інструменти командного рядка понад 10 МБ, замість вставляти файл у браузер.

Перш ніж вставляти чутливе навантаження в онлайн-інструмент, знайте, куди воно йде. Ця стаття охоплює лише поведінку інструменту під час виконання, не синтаксис.

1. Дані й приватність

Чи завантажує онлайн-форматувальник JSON мої дані на сервер?

Ні. Розбір, форматування, мініфікація, diff і запити всі відбуваються в браузері, і сторінка ніколи не надсилає нічого, що ви вставили, на сервер застосунку.

Вам не треба читати заяву про приватність, щоб визначити, чи онлайн-інструмент завантажує дані; панелі мережі браузера достатньо:

  1. Відкрийте інструменти розробника, перемкніться на панель Network і ввімкніть збереження логу;
  2. Вставте трохи JSON і натисніть «Форматувати»;
  3. Стежте, чи з'являється новий 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 МБ надавайте перевагу локальному скрипту.

Браузер замерзає після вставлення. Що тепер?

Не перезавантажуйте спершу — перезавантаження втрачає вміст, і вам доведеться вставляти знову. Рятуйте в такому порядку:

  1. Зачекайте 10–30 секунд. У більшості випадків головний потік розбирає чи відображає й відновиться сам;
  2. Щойно відновиться, негайно перемкніться на вигляд «Мініфікація» або згорніть дерево, щоб зменшити DOM-вузли;
  3. Копіюйте вміст у локальний файл і перемкніться на командний рядок:
# Подивіться на структуру лише перших 100 рядків, щоб не завантажувати все
head -c 200000 data.json | jq . | head -n 100

# Порахуйте записи потоковим інструментом, не завантажуючи їх у памʼять
jq -c '.items[]' data.json | wc -l

Наступного разу, натрапивши на великий файл, спершу запустіть wc -c, щоб побачити кількість байтів, а потім вирішуйте, чи вставляти його в браузер.

Чому форматування не змінилося після вставлення?

Три поширені причини, за частотою:

  1. Вхід уже мініфікований і не має синтаксичних помилок: форматування лише коригує відступи, тож якщо оригінал справді два рядки, він усе одно буде два рядки потому — переведення рядка всередині рядків не розгортаються;
  2. Вміст не є JSON: наприклад, ви вставили обʼєктний літерал JavaScript (ключі без лапок, одинарні лапки), і парсер повідомляє про помилку замість форматування;
  3. Ви натиснули не ту кнопку: мініфікація й форматування йдуть у протилежних напрямках, а мініфікація знімає всі відступи.

Як визначити: подивіться на кількість символів у правому верхньому куті області виводу. Після форматування кількість має зрости (зайві відступи й переведення рядків); якщо вона зменшилася, ви запустили мініфікацію.

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?

Зазвичай це не різниця браузерів, а різниця кодування. Налагоджуйте в такому порядку:

  1. BOM: UTF-8, збережений Windows Notepad, містить BOM, який деякі парсери не терплять;
  2. Закінчення рядків: змішування CRLF і LF не впливає на сам JSON, але зсуває повідомлені номери рядків помилки, тож виглядає як «неправильна позиція помилки»;
  3. Невидимі символи: текст, копійований зі сторінки, може містити пробіли нульової ширини (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