приложение ·

JSON Formatter

Проверить, починить и отформатировать JSON, не отправляя его никуда.

  • TypeScript
  • React 19
  • CodeMirror 6
  • Vite
JSON Formatter в тёмной теме: отформатированный каталог товаров на 4311 строк, статус «Valid JSON».

Я не доверяю онлайн-форматтерам рабочие данные: JSON из логов и ответов API уходит на чужой сервер, и что с ним там происходит, неизвестно. При этом хотелось не просто «безопасно», а красиво и удобно: чтобы вставил, увидел, что сломано, починил и скопировал обратно. Так появился json.pavbox.com.

Что умеет

  • Ничего не уходит из браузера. Сервера нет, аккаунта нет, сетевых запросов во время работы нет. Это гарантирует не обещание, а политика безопасности страницы: браузер блокирует любой запрос.
  • Чинит сломанный JSON и говорит, что именно поменял. Одинарные кавычки, лишние и пропущенные запятые, комментарии, ключи без кавычек, True и None из Python, обрезанный документ с незакрытыми скобками. 19 правил, каждая правка видна в журнале «было → стало» и отменяется одним Undo.
  • Проверяет на лету. 35 видов диагностики с позицией строка:колонка, в том числе дублирующиеся ключи и потеря точности у длинных числовых id.
  • Форматирует, не портя числа. 1e10, -0, 0.1000 и 20-значные целые остаются как написаны, потому что печать идёт по токенам, а не через JSON.parse.
  • Удобно с телефона. Все действия — кнопками внизу экрана, ошибки открываются листом снизу и не закрывают строку, на которую указывают.

Документы до 10 МБ, тяжёлые — в фоновом потоке, интерфейс не замирает.

Развитие проекта

Сделать деревья, графики, diff и конвертации в YAML.

Первая версия делает две вещи основательно: проверку и форматирование.

Как сделан

Ядро — чистый TypeScript без DOM: разбор на токены, диагностика как данные со стабильными кодами, реестр правил починки. Границы слоёв проверяет сборка. Тестов больше, чем кода: около 3,5 тысячи юнитов, эталонный набор JSONTestSuite и проверка скорости на документах в 2 МиБ.

…