JSON Toolkit

Вопросы об использовании инструментов: данные, файлы и экспорт

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

Начинающий~10 мин чтенияОпубликовано 2026-10-30Обновлено 2026-10-30
Обложка вопросов об использовании инструментов

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

Прежде чем вставлять чувствительную полезную нагрузку в онлайн-инструмент, выясните, куда она попадает. Эта статья охватывает только поведение инструмента во время работы, а не синтаксис.

1. Данные и приватность

Загружает ли онлайн-форматтер JSON мои данные на сервер?

Нет. Парсинг, форматирование, минификация, сравнение и запросы происходят всё в браузере, и страница никогда не отправляет то, что вы вставляете, на сервер приложения.

Чтобы узнать, загружает ли онлайн-инструмент данные, не нужно читать заявление о приватности; достаточно панели сети браузера:

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

Браузер завис после вставки. Что теперь?

Сначала не обновляйте — обновление теряет контент, и придётся вставлять снова. Спасайте в таком порядке:

  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 или обратно в JSON5, чтобы облегчить ручное редактирование.

Всегда выдавайте стандартный JSON при пересечении систем. JSON5 — диалект для людей, пишущих конфигурацию; тело запроса с Content-Type: application/json, содержащее комментарии или висячие запятые, обычно будет отклонено сервером.

4. Окружение и совместимость

Работает ли на телефоне?

Да. Интерфейс перестраивается в одну колонку, и форматирование, минификация, сравнение и JSONPath все сохраняются.

Но работа с большими файлами на телефоне — плохой опыт: экранная клавиатура закрывает контент, выделять текст сложно, а браузер может выгрузить страницу при переключении приложений, теряя ваш контент. Приемлемо как экстренный вариант, но изо дня в день делайте это на десктопе.

Почему один и тот же файл открывается в Chrome, но даёт ошибку в Safari?

Обычно это не разница браузеров, а разница кодировок. Отлаживайте в таком порядке:

  1. BOM: UTF-8, сохранённый Блокнотом Windows, включает BOM, который некоторые парсеры не терпят;
  2. Окончания строк: смешение CRLF и LF не влияет на сам JSON, но сдвигает сообщаемые номера строк ошибок, поэтому кажется, что «позиция ошибки неверна»;
  3. Невидимые символы: текст, скопированный со веб-страницы, может содержать пробелы нулевой ширины (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