Вопросы об использовании инструментов: данные, файлы и экспорт
Главное: Загружаются ли данные, какой размер файла работает, сохраняется ли что-то локально, почему китайский превращается в escape-последовательности: десять вопросов, разъясняющих реальные границы онлайн-инструмента JSON.

Главное: парсинг, форматирование, сравнение и запросы выполняются полностью в вашем браузере и продолжают работать офлайн; очищайте историю localStorage после работы с чувствительными данными; а выше 10 МБ переходите на потоковые инструменты командной строки, а не вставляйте файл в браузер.
Прежде чем вставлять чувствительную полезную нагрузку в онлайн-инструмент, выясните, куда она попадает. Эта статья охватывает только поведение инструмента во время работы, а не синтаксис.
1. Данные и приватность
Загружает ли онлайн-форматтер JSON мои данные на сервер?
Нет. Парсинг, форматирование, минификация, сравнение и запросы происходят всё в браузере, и страница никогда не отправляет то, что вы вставляете, на сервер приложения.
Чтобы узнать, загружает ли онлайн-инструмент данные, не нужно читать заявление о приватности; достаточно панели сети браузера:
- Откройте инструменты разработчика, переключитесь на панель «Сеть» и включите сохранение лога;
- Вставьте немного JSON и нажмите «Форматировать»;
- Следите, появляется ли новый XHR или fetch-запрос и содержит ли его тело ваш контент.
Для действительно локального инструмента этот шаг покажет только запросы статических ресурсов. Наоборот, если одно действие форматирования порождает POST /api/format,
в теле которого ваш исходный текст, значит данные уже покинули браузер, что бы ни утверждала страница.
Каждый инструмент на этом сайте — чисто фронтендовая реализация, и сборка не содержит серверного API. После перехода в офлайн обновление из кеша всё равно работает, и это также самый прямой способ понять, «полностью ли это локально».
Могу ли я пользоваться им офлайн?
Да, при условии, что страница была загружена хотя бы раз.
Ресурсы сайта скачиваются в кеш браузера при первом посещении, поэтому даже без сети впоследствии форматирование, минификация, конвертация JSON5 и запросы JSONPath продолжают работать. Работают только функции, зависящие от сети, — например, проверка новой версии или скачивание установщика для десктопа.
Офлайн-тест также хороший способ убедиться, что «данные никогда не уходят»: если всё ломается в момент отключения, значит каждое действие обращалось к серверу.
Сохраняются ли какие-то данные локально? Как их очистить?
Да, но только в localStorage текущего браузера, и только история и настройки интерфейса.
- История: последние 100 обработанных записей в обратном хронологическом порядке, используется для вызова ранее вставленных данных;
- Настройки интерфейса: тема, язык, предпочтения отступов и так далее;
- Не сохраняется: сам файл, записи о загрузке или что-либо несущее идентичность.
Есть три способа очистки, от самого узкого к самому широкому:
| Способ | Область | Когда использовать |
|---|---|---|
| «Очистить историю» на странице истории | Удаляет только историю, настройки остаются | После работы с чувствительными данными |
localStorage.clear() в инструментах разработчика |
Все локальные данные этого сайта | Диагностика необычных настроек |
| «Очистить данные просмотров» браузера для этого сайта | Cookies, кеш и хранилище вместе | Перед использованием общего компьютера |
При работе с производственными данными на общем компьютере очищайте историю по завершении, а не просто закрывайте вкладку — localStorage не исчезает при закрытии вкладки.
Почему китайские символы превратились в \u4e2d\u6587?
Потому что функция «экранирование» преобразует символы вне ASCII в Unicode-escape-последовательности. Это намеренное поведение, а не искажение кодировки.
\u4e2d — кодовая точка символа 中 (U+4E2D). В JSON обе формы семантически идентичны и разбираются в одну и ту же строку:
{
"escaped": "\u4e2d\u6587",
"plain": "中文"
}
Когда экранирование нужно? При встраивании JSON в старую систему, принимающую только ASCII, при записи его в HTTP-заголовок или при вложении внутрь другой строки. Когда оно не нужно? Большинству транспорта API и файлового хранения оно не нужно; хранение китайского напрямую как UTF-8 экономит байты — один китайский символ это 3 байта, а после экранирования — 6 байтов.
Если вы видите, что китайский превратился в \u4e2d, сначала проверьте, не нажали ли вы кнопку «Экранировать», а не подозревайте поломку кодировки.
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 или обратно в JSON5, чтобы облегчить ручное редактирование.
Всегда выдавайте стандартный JSON при пересечении систем. JSON5 — диалект для людей, пишущих конфигурацию; тело запроса с
Content-Type: application/json, содержащее комментарии или висячие запятые, обычно будет отклонено сервером.
4. Окружение и совместимость
Работает ли на телефоне?
Да. Интерфейс перестраивается в одну колонку, и форматирование, минификация, сравнение и JSONPath все сохраняются.
Но работа с большими файлами на телефоне — плохой опыт: экранная клавиатура закрывает контент, выделять текст сложно, а браузер может выгрузить страницу при переключении приложений, теряя ваш контент. Приемлемо как экстренный вариант, но изо дня в день делайте это на десктопе.
Почему один и тот же файл открывается в Chrome, но даёт ошибку в Safari?
Обычно это не разница браузеров, а разница кодировок. Отлаживайте в таком порядке:
- BOM: UTF-8, сохранённый Блокнотом Windows, включает BOM, который некоторые парсеры не терпят;
- Окончания строк: смешение CRLF и LF не влияет на сам JSON, но сдвигает сообщаемые номера строк ошибок, поэтому кажется, что «позиция ошибки неверна»;
- Невидимые символы: текст, скопированный со веб-страницы, может содержать пробелы нулевой ширины (U+200B), невидимые глазу, но достаточные для поломки сопоставления ключей.
Одна команда всё проясняет:
# Посмотреть hex первых 16 байтов; ведущий EF BB BF означает наличие BOM
head -c 16 data.json | xxd
5. Быстрый справочник
| Вопрос | Вывод |
|---|---|
| Загружает ли данные | Нет, всё обрабатывается локально в браузере, и работает офлайн |
| Где хранятся данные | localStorage, только история и настройки, никогда файлы |
| Какой размер файла разумен | Плавно до 2 МБ; выше 10 МБ переходите на командную строку |
Китайский превратился в \u |
Вы нажали экранирование; эквивалентно, но объёмнее, и обычно не нужно |
| Зависло, что теперь | Дождаться восстановления → свернуть дерево → копировать наружу и использовать jq |
| Экспорт без BOM? | Да, UTF-8 без BOM |
| Поддерживаются ли комментарии | JSON5/JSONC на входе; выдавайте стандартный JSON |