Найти в Дзене
Герман Геншин

JSON под микроскопом: как вывести на чистую воду даже самую коварную ошибку!

Сегодня JSON по-настоящему стал универсальным языком данных: его используют буквально повсюду — в настройках программ, при работе с удалёнными API и множестве других задач. Однако чем чаще вы сталкиваетесь с этим форматом, тем выше риск встретить досадные ошибки. Хотя структура JSON довольно простая, даже малейшая оплошность превращает файл в нечитаемый. Главное отличие от похожей на него JavaScript-нотации — у JSON очень строгие правила синтаксиса, и запутаться тут проще простого. Самое важное — научиться быстро находить и убирать такие недочёты. Лучше всего предупредить появление ошибок заранее. В этом отлично помогают современные редакторы кода и IDE: они не только подсвечивают разные части файла, но и умеют автоматически доводить до ума конструкции, сразу выделяя некорректные места. Я чаще всего выбираю редактор Zed — он мне нравится поддержкой Language Server Protocol (LSP), за счёт чего автозаполнение и автоформатирование работают особенно плавно при работе с JSON: Особый кайф —
Оглавление

Сегодня JSON по-настоящему стал универсальным языком данных: его используют буквально повсюду — в настройках программ, при работе с удалёнными API и множестве других задач. Однако чем чаще вы сталкиваетесь с этим форматом, тем выше риск встретить досадные ошибки.

Хотя структура JSON довольно простая, даже малейшая оплошность превращает файл в нечитаемый. Главное отличие от похожей на него JavaScript-нотации — у JSON очень строгие правила синтаксиса, и запутаться тут проще простого. Самое важное — научиться быстро находить и убирать такие недочёты.

Используйте редактор с подсветкой синтаксиса

Лучше всего предупредить появление ошибок заранее. В этом отлично помогают современные редакторы кода и IDE: они не только подсвечивают разные части файла, но и умеют автоматически доводить до ума конструкции, сразу выделяя некорректные места.

Я чаще всего выбираю редактор Zed — он мне нравится поддержкой Language Server Protocol (LSP), за счёт чего автозаполнение и автоформатирование работают особенно плавно при работе с JSON:

Особый кайф — функция автоформатирования при сохранении: редактор сам поправит многие мелочи, например, добавит забытые кавычки.

Стоит только нажать «сохранить» — и Zed расставит всё как надо, чтобы файл сразу соответствовал стандарту JSON.

Правда, если ошибка слишком запутанная, автоматом редактор исправить её не сможет — зато сразу выделит и покажет, где именно проблема возникла.

Похожие фишки есть у многих современных редакторов, но Zed приятно выделяется скоростью и компактностью: идеален для тех, кто устал от громоздкого VS Code.

Проверяйте JSON в онлайн-валидаторах

В сети полно сервисов для проверки, форматирования и редактирования JSON — буквально пара кликов, и у вас на экране куча вариантов. Я чаще всего использую JSONLint — вот за что его ценю.

Во-первых, как и Zed, онлайн-редактор JSONLint здесь и сейчас показывает любые ошибки: стоит что-то набрать или вставить — и результат перед глазами, никакой лишней возни с кнопками.

-2

Во-вторых, сообщения об ошибках здесь гораздо понятнее и человечнее, чем у большинства аналогов. Например, — «Имена свойств должны быть в двойных кавычках», а не абстрактное «Ожидалась ‘СТРОКА’, ‘}’, получено ‘undefined’». Многие другие сервисы показывают сухие технические детали, а JSONLint объясняет простыми словами.

Плюс — куча полезных допов: автоматическое восстановление битых файлов, проверка по JSON Schema и более 40 других инструментов, которые заметно облегчают жизнь всем, кто часто работает с JSON.

Используйте консольные валидаторы

Если привычнее работать в терминале — для вас тоже есть удобные инструменты! Консольная утилита JSON Lint почти полностью повторяет функциональность одноимённого сайта, только работает прямо в командной строке.

-3

Единственное, сообщения здесь менее подробные, чем в веб-версии, и утилита работает в неинтерактивном режиме. Такой способ подойдёт тем, кто часто трудится без графики или подключается к серверам по SSH.

Запускайте профессиональные JSON-процессоры

Есть ещё более продвинутые утилиты для работы с JSON прямо в терминале — лучший пример jq. Этот инструмент прежде всего предназначен для отбора и преобразования данных, но отлично справляется и с отловом ошибок.

jq идеально работает с потоками данных: легко скармливает JSON из файлов или иных программ, «переваривая» любой поданный ей поток.

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

Фича jq — флаг --stream-errors. Он детально расписывает каждую ошибку (это удобно для автоматизации или работы с AI-ассистентами).

-4

Просматривайте JSON с помощью терминальных вьюеров

Есть и отдельная категория — терминальные визуализаторы JSON, которые одновременно показывают структуру и сразу подсвечивают ошибки. Я часто использую fx и jless, но тут многое зависит от конкретной программы — формат сообщений может сильно отличаться:

-5

В этом случае сообщение от fx читается куда проще, чем у jless.

Минус подобных инструментов (и большинства консольных валидаторов) — они не замечают все тонкие ошибки. Например, если в объекте два одноимённых свойства, вы об этом не узнаете — такие детали в процессе просто проигнорируются.

Проверяйте JSON через консоль браузера

Иногда покидать браузер нет никакого желания — тогда можно быстро воспользоваться JSON.parse() прямо в консоли JavaScript, чтобы проверить ваш JSON на лету:

-6

Этот способ — самый «прямой»: часто встречаются непонятные сообщения и длинные стек-трейсы, но иногда именно он спасает в критической ситуации.

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

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

Также подписывайтесь на нас в: