приложение ·
JSON Formatter
Проверить, починить и отформатировать JSON, не отправляя его никуда.
- TypeScript
- React 19
- CodeMirror 6
- Vite
Я не доверяю онлайн-форматтерам рабочие данные: 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 МиБ.