DevToys Pro

бесплатные веб-инструменты для разработчиков

Блог
Оцените нас:
Попробуйте расширение для браузера:
← Назад к блогу

Dev Блог: форматтеры JSON, SQL и XML для чистого кода

7 минут чтения

Форматирование JSON, SQL‑запросов и XML‑документов — одна из самых частых задач в разработке. Минифицированные ответы API, сжатые конфигурационные файлы и однострочные SQL‑запросы практически невозможно комфортно отлаживать без нормального форматирования.

В этом гайде разобраны основные форматтеры кода, которые разработчики используют каждый день — когда стоит «распрямлять» (beautify), когда минифицировать и как корректное форматирование улучшает качество кода и эффективность отладки.


Форматирование и валидация JSON

JSON (JavaScript Object Notation) — универсальный формат обмена данными для веб‑API, конфигурационных файлов и хранилищ данных. Форматтер JSON преобразует минифицированный JSON в читаемый с отступами и обратно.

Форматирование минифицированного JSON

Ответы API и продакшен‑конфиги часто минифицируются для уменьшения размера. При отладке важно pretty print JSON, чтобы увидеть структуру данных:

// Минифицировано (сложно читать)
{"users":[{"id":1,"name":"Alice","roles":["admin","user"]},{"id":2,"name":"Bob","roles":["user"]}],"meta":{"total":2,"page":1}}

// Отформатировано (читаемо)
{
  "users": [
    {
      "id": 1,
      "name": "Alice",
      "roles": ["admin", "user"]
    },
    {
      "id": 2,
      "name": "Bob",
      "roles": ["user"]
    }
  ],
  "meta": {
    "total": 2,
    "page": 1
  }
}

Минификация JSON для продакшена

Для API и хранилищ минификация убирает лишние пробелы и сокращает размер полезной нагрузки:

  • Удаляет все отступы и переводы строк
  • Убирает пробелы после двоеточий и запятых
  • Часто уменьшает размер JSON на 10–30%
  • Ускоряет передачу и снижает расход трафика

Валидация JSON и проверка синтаксиса

Валидатор JSON помогает находить синтаксические ошибки, которые ломают парсеры:

// Типичные ошибки JSON

// Висячая запятая (некорректный JSON)
{ "name": "Alice", }

// Одинарные кавычки (некорректный JSON)
{ 'name': 'Alice' }

// Неэкранированный ключ (некорректный JSON)
{ name: "Alice" }

// Отсутствует запятая
{ "name": "Alice" "age": 30 }

// Корректный JSON использует двойные кавычки и без висячих запятых
{ "name": "Alice", "age": 30 }

Экранирование и разэкранирование JSON‑строк

Когда JSON вкладывается в другой JSON (часто в логах), строки становятся дважды экранированными. Чтобы разэкранировать JSON:

// Дважды экранированная JSON-строка (из логов)
"{\"user\":\"alice\",\"action\":\"login\"}"

// После разэкранирования
{"user":"alice","action":"login"}

// Затем форматируем для читаемости
{
  "user": "alice",
  "action": "login"
}

Инструмент JSON Formatter поддерживает форматирование, минификацию и валидацию с подсветкой синтаксических ошибок.


Форматирование SQL‑запросов

Сложные SQL‑запросы становятся нечитаемыми, если записаны в одну строку или с несогласованным стилем. Форматтер SQL приводит отступы и регистр ключевых слов к единому виду.

Форматирование однострочных запросов

-- До форматирования (трудно читать)
SELECT u.id, u.name, u.email, COUNT(o.id) as order_count FROM users u LEFT JOIN orders o ON u.id = o.user_id WHERE u.status = 'active' AND u.created_at > '2024-01-01' GROUP BY u.id, u.name, u.email HAVING COUNT(o.id) > 5 ORDER BY order_count DESC LIMIT 100;

-- После форматирования (читаемо)
SELECT
  u.id,
  u.name,
  u.email,
  COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o
  ON u.id = o.user_id
WHERE u.status = 'active'
  AND u.created_at > '2024-01-01'
GROUP BY
  u.id,
  u.name,
  u.email
HAVING COUNT(o.id) > 5
ORDER BY order_count DESC
LIMIT 100;

Соглашения по форматированию SQL

  • Ключевые слова в верхнем регистре — SELECT, FROM, WHERE, JOIN, ORDER BY
  • Выравнивание предложений — каждый основной блок запроса с новой строки
  • Списки колонок — по одному столбцу на строку для длинных SELECT‑ов
  • Условия JOIN — блок ON с отступом под JOIN
  • Вложенные запросы — единообразные отступы для подзапросов и CTE

Форматирование подзапросов и CTE

-- Форматирование CTE (WITH)
WITH active_users AS (
  SELECT
    id,
    name,
    email
  FROM users
  WHERE status = 'active'
),
recent_orders AS (
  SELECT
    user_id,
    COUNT(*) AS order_count
  FROM orders
  WHERE created_at > CURRENT_DATE - INTERVAL '30 days'
  GROUP BY user_id
)
SELECT
  au.name,
  au.email,
  COALESCE(ro.order_count, 0) AS recent_orders
FROM active_users au
LEFT JOIN recent_orders ro
  ON au.id = ro.user_id
ORDER BY recent_orders DESC;

Когда использовать форматирование SQL

  • Отладка медленных запросов — структура подсвечивает логические ошибки
  • Код‑ревью — единый стиль упрощает чтение diff‑ов
  • Документация — красиво оформленные запросы в техдоках
  • Миграции — сложные скрипты ALTER/CREATE
  • Хранимые процедуры — многострочные SQL‑блоки

Инструмент SQL Formatter поддерживает синтаксис MySQL, PostgreSQL, SQL Server и стандартный SQL с настраиваемыми отступами.


Форматирование и prettify XML

XML‑документы из SOAP‑API, конфигурационных файлов и экспортов данных часто приходят минифицированными или с «ломаным» форматированием. Форматтер XML добавляет корректные отступы и переводы строк.

Форматирование минифицированного XML

<!-- Минифицированный XML (нечитаемо) -->
<?xml version="1.0"?><catalog><book id="1"><title>Clean Code</title><author>Robert Martin</author><price>35.99</price></book><book id="2"><title>The Pragmatic Programmer</title><author>David Thomas</author><price>49.99</price></book></catalog>

<!-- Отформатированный XML (читаемо) -->
<?xml version="1.0"?>
<catalog>
  <book id="1">
    <title>Clean Code</title>
    <author>Robert Martin</author>
    <price>35.99</price>
  </book>
  <book id="2">
    <title>The Pragmatic Programmer</title>
    <author>David Thomas</author>
    <price>49.99</price>
  </book>
</catalog>

Сценарии форматирования XML

  • Ответы SOAP‑API — отладка сложных XML‑пейлоадов
  • Maven pom.xml — приведение в порядок зависимостей и плагинов
  • Android‑разметка — форматирование layout‑файлов XML
  • SVG‑файлы — просмотр и правка векторной графики
  • .NET‑конфиги — форматирование web.config, app.config
  • RSS/Atom‑ленты — отладка структуры фида

Минификация XML для продакшена

Как и JSON, XML можно минифицировать для уменьшения размера при передаче:

  • Удаляет отступы и лишние пробелы
  • Сохраняет значимые пробелы внутри текстового содержимого
  • Не трогает XML‑декларацию и пространства имён
  • Уменьшает размер SOAP‑запросов и больших XML‑документов

XML‑пространства имён и сложные документы

<!-- XML с пространствами имён (часто в SOAP) -->
<soap:Envelope
  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Header>
    <auth:Token xmlns:auth="http://example.com/auth">
      abc123
    </auth:Token>
  </soap:Header>
  <soap:Body>
    <api:GetUser xmlns:api="http://example.com/api">
      <api:UserId>42</api:UserId>
    </api:GetUser>
  </soap:Body>
</soap:Envelope>

Инструмент XML Formatter корректно обрабатывает пространства имён, CDATA‑секции и сохраняет структуру документа при форматировании.


Лучшие практики форматирования

Когда форматировать (beautify)

  • Отладка — при поиске проблем всегда форматируйте данные
  • Код‑ревью — отформатированный код проще просматривать
  • Документация — в примерах стоит использовать читабельный формат
  • Конфигурация — файлы, редактируемые людьми, должны быть удобны для чтения
  • Система контроля версий — единый стиль улучшает diff‑ы и историю изменений

Когда минифицировать

  • Пейлоады API — для уменьшения размера трафика
  • Продакшен‑конфиги — если файлы не редактируются вручную
  • Встраиваемые данные — data‑URL, inline‑скрипты и стили
  • Оптимизация хранения — JSON‑колонки в БД и лог‑хранилища

Стандарты отступов

ФорматТипичный стандартКомментарий
JSON2 пробелаДефолт в JavaScript/Node.js‑проектах
SQL2–4 пробелаЗависит от команды и стиля проекта
XML2–4 пробелаЛучше придерживаться общих правил проекта

Краткий справочник по форматтерам

ЗадачаИнструментВозможности
Форматирование/минификация JSONJSON FormatterОтступы, минификация, валидация, сортировка ключей
Форматирование SQL‑запросовSQL FormatterРазные диалекты, регистр ключевых слов, отступы
Beautify/минификация XMLXML FormatterПоддержка пространств имён, CDATA‑секций

Связанные инструменты

Форматтеры отлично работают в связке с другими утилитами для данных:

  • JSON ↔ YAML Converter — конвертация и форматирование между форматами
  • XML ↔ JSON Converter — преобразование и форматирование структур данных
  • JSONPath Tester — запросы к отформатированному JSON
  • XML Validator — проверка структуры XML
  • Text Comparer — diff между исходными и отформатированными версиями

Все форматтеры в DevToys Pro

Эти форматтеры входят в коллекцию Formatters в DevToys Pro. Всё форматирование выполняется прямо в вашем браузере — код не отправляется на внешние серверы.

Открыть форматтеры →