json-tidy: CLI для тех, кто устал форматировать JSON руками

#cli#json#developer-tools

Вчера снова потратил 15 минут на бессмысленный ритуал: скопировал JSON из API-ответа → вставил в веб-форматтер → скачал обратно → подправил отступы вручную. В какой-то момент мозг выдал error 500: «Серьёзно? В 2024 году я всё ещё делаю это руками?»

Что не так с существующими решениями

jq — мощный, но его синтаксис приходится гуглить даже после 5 лет использования. Prettier хорош для проектов, но неудобен для разовых операций. Онлайн-форматтеры требуют танцев с бубном вокруг copy-paste и часто добавляют рекламные trackers в ваш JSON (шутка… или нет).

json-tidy-pro решает три конкретные боли:

  1. Форматирование без контекстного переключения

    npx json-tidy-pro format messy.json --indent 2 --sort-keys
    

    Больше не нужно уходить из терминала. Поддерживает кастомные отступы, сортировку ключей и даже цветной вывод через --color.

  2. Валидация с человекочитаемыми ошибками
    В отличие от сухого jq empty < file.json, здесь есть детализация:

    $ npx json-tidy-pro validate broken.json
    Error: Parse error at line 3, column 15:
    Expected ',' after object property
    

    Плюс проверка дубликатов ключей и опциональная схема через --schema.

  3. Конвертация между форматами
    Особенно полезно для DevOps-сценариев:

    # Конфиг в YAML для Kubernetes
    npx json-tidy-pro convert config.json --to yaml > deployment.yml
    

Под капотом

Заглянул в исходники — внутри используется тот же парсер, что и в VSCode (jsonc-parser), но с добавленным слоем для работы с разными форматами. Интересные находки:

Где спотыкается

Не всё идеально: при конвертации в CSV вложенные объекты просто сериализуются в строку, что не всегда полезно. Нет встроенной возможности фильтрации данных à la jq '.user.name'. И главное — пока нет плагина для редактора, чтобы форматировать JSON прямо в буфере.

Альтернативы на случай, если…

Вывод

json-tidy-pro — это не «инновационный прорыв», а просто удобный сниппет, который избавляет от рутины. Особенно рекомендую для:

Лично я добавил алиас в .zshrc:

alias jt='npx json-tidy-pro format --color'

Теперь вместо curl ... | jq иногда ловлю себя на curl ... | jt. Мелкий, но приятный апгрейд повседневного workflow.


Попробуй сам: DigitalOcean — $200 кредитов для новых пользователей.


Источник: https://dev.to/lb1192176991lab/json-tidy-stop-manually-formatting-json-files-1adj