Рабочий процесс отладки API: Форматирование JSON → Запросы с JSONPath → Экспорт в CSV
Вы вызываете API и получаете минифицированный JSON с сотнями вложенных объектов. Вам нужно найти конкретных пользователей, извлечь их email-адреса и экспортировать в CSV для дальнейшего анализа. Это руководство проведёт вас через полный процесс отладки API с использованием трёх взаимосвязанных инструментов.
Сценарий: Отладка ответа API пользователей
Проблема: Сторонний API возвращает сложный JSON-ответ с данными пользователей. Вам нужно:
- Прочитать беспорядочный, минифицированный JSON
- Найти всех активных пользователей в отделе "engineering"
- Извлечь их имена, email и даты присоединения
- Экспортировать в CSV для импорта в другую систему
Сырой ответ API (минифицированный)
{"status":"success","data":{"users":[{"id":1,"name":"Alice Johnson","email":"alice@company.com","department":"engineering","active":true,"joinDate":"2024-03-15"},{"id":2,"name":"Bob Smith","email":"bob@company.com","department":"sales","active":true,"joinDate":"2024-01-10"},{"id":3,"name":"Charlie Brown","email":"charlie@company.com","department":"engineering","active":false,"joinDate":"2023-11-20"},{"id":4,"name":"Diana Prince","email":"diana@company.com","department":"engineering","active":true,"joinDate":"2025-02-01"},{"id":5,"name":"Eve Davis","email":"eve@company.com","department":"marketing","active":true,"joinDate":"2024-08-12"}],"totalCount":5,"timestamp":"2026-01-21T10:30:00Z"}}Это невозможно прочитать. Давайте пройдём через полный процесс шаг за шагом.
Шаг 1: Форматирование JSON для читаемости
Инструмент: JSON форматтер
Цель: Преобразовать минифицированный JSON в удобочитаемый формат с правильными отступами.
Действия
- Откройте JSON форматтер
- Вставьте минифицированный JSON в область ввода
- Нажмите "Format" или нажмите Ctrl+Enter
- Установите отступ в 2 пробела для читаемости
Форматированный вывод
{
"status": "success",
"data": {
"users": [
{
"id": 1,
"name": "Alice Johnson",
"email": "alice@company.com",
"department": "engineering",
"active": true,
"joinDate": "2024-03-15"
},
{
"id": 2,
"name": "Bob Smith",
"email": "bob@company.com",
"department": "sales",
"active": true,
"joinDate": "2024-01-10"
},
{
"id": 3,
"name": "Charlie Brown",
"email": "charlie@company.com",
"department": "engineering",
"active": false,
"joinDate": "2023-11-20"
},
{
"id": 4,
"name": "Diana Prince",
"email": "diana@company.com",
"department": "engineering",
"active": true,
"joinDate": "2025-02-01"
},
{
"id": 5,
"name": "Eve Davis",
"email": "eve@company.com",
"department": "marketing",
"active": true,
"joinDate": "2024-08-12"
}
],
"totalCount": 5,
"timestamp": "2026-01-21T10:30:00Z"
}
}Результат: Теперь вы можете видеть структуру. Есть 5 пользователей с разными отделами и статусами активности.
Шаг 2: Запрос данных с помощью JSONPath
Инструмент: JSONPath тестер
Цель: Отфильтровать пользователей, чтобы найти только активных членов инженерной команды.
Поиск активных пользователей инженерного отдела
JSONPath выражение:
$.data.users[?(@.department == 'engineering' && @.active == true)]Действия
- Откройте JSONPath тестер
- Вставьте форматированный JSON в поле ввода JSON
- Введите JSONPath выражение в поле запроса
- Нажмите "Test", чтобы увидеть результаты
Результат запроса
[
{
"id": 1,
"name": "Alice Johnson",
"email": "alice@company.com",
"department": "engineering",
"active": true,
"joinDate": "2024-03-15"
},
{
"id": 4,
"name": "Diana Prince",
"email": "diana@company.com",
"department": "engineering",
"active": true,
"joinDate": "2025-02-01"
}
]Результат: Отфильтровано с 5 пользователей до 2 активных членов инженерной команды.
Извлечение конкретных полей
Если вам нужны только имена и email, уточните запрос:
$.data.users[?(@.department == 'engineering' && @.active == true)].['name','email','joinDate']Результат:
[
{
"name": "Alice Johnson",
"email": "alice@company.com",
"joinDate": "2024-03-15"
},
{
"name": "Diana Prince",
"email": "diana@company.com",
"joinDate": "2025-02-01"
}
]Шаг 3: Экспорт в CSV для анализа
Инструмент: JSON в CSV конвертер
Цель: Преобразовать отфильтрованные JSON результаты в формат CSV для анализа в таблицах или импорта в базу данных.
Действия
- Скопируйте отфильтрованный JSON результат из JSONPath тестера
- Откройте JSON в CSV конвертер
- Вставьте отфильтрованный JSON во ввод
- Нажмите "Convert to CSV"
- Скачайте или скопируйте CSV вывод
CSV вывод
name,email,joinDate
Alice Johnson,alice@company.com,2024-03-15
Diana Prince,diana@company.com,2025-02-01Результат: Чистый CSV готов для Excel, Google Sheets или импорта в базу данных.
Краткое описание полного процесса
1. Форматирование JSON
Ввод: Минифицированный ответ API (1 строка, нечитаемо)
Инструмент: JSON форматтер
Вывод: Читаемый, с отступами JSON (50 строк, структурированный)
2. Запрос с JSONPath
Ввод: Форматированный JSON (все 5 пользователей)
Инструмент: JSONPath тестер
Выражение: $.data.users[?(@.department == 'engineering' && @.active == true)]
Вывод: Отфильтрованный JSON (2 подходящих пользователя)
3. Экспорт в CSV
Ввод: Отфильтрованный JSON (2 пользователя)
Инструмент: JSON в CSV конвертер
Вывод: CSV файл (2 строки + заголовок)
Финальный результат: CSV с активными пользователями инженерного отдела готов для анализаПродвинутые варианты использования
Случай 1: Извлечение вложенных данных
Сценарий: У пользователей есть вложенные объекты адресов.
{
"users": [
{
"name": "Alice",
"address": {
"city": "San Francisco",
"state": "CA"
}
}
]
}JSONPath для выравнивания:
$.users[*].['name', 'address.city', 'address.state']Случай 2: Фильтрация по диапазону дат
Найти пользователей, присоединившихся после 2024-06-01:
$.data.users[?(@.joinDate > '2024-06-01')]Случай 3: Подсчёт результатов
Сколько активных пользователей?
$.data.users[?(@.active == true)].lengthРаспространённые паттерны отладки API
Паттерн 1: Постраничные ответы
{
"data": {
"results": [...],
"pagination": {
"page": 1,
"perPage": 10,
"total": 150
}
}
}
// Извлечь все результаты со всех страниц
$.data.results[*]Паттерн 2: Обработка ошибок
{
"status": "error",
"errors": [
{"field": "email", "message": "Invalid format"},
{"field": "age", "message": "Must be positive"}
]
}
// Извлечь сообщения об ошибках
$.errors[*].message
// Результат: ["Invalid format", "Must be positive"]Паттерн 3: Глубокая вложенность
{
"company": {
"departments": [
{
"name": "Engineering",
"teams": [
{
"name": "Backend",
"members": [...]
}
]
}
]
}
}
// Рекурсивный спуск для поиска всех членов
$..members[*]Советы по рабочему процессу
- Всегда форматируйте сначала: Чтение минифицированного JSON приводит к ошибкам
- Тестируйте JSONPath постепенно: Начните широко (
$.data.users), затем добавляйте фильтры - Валидируйте JSON перед запросами: Используйте JSON форматтер для выявления синтаксических ошибок
- Проверяйте структуру CSV: Убедитесь, что вложенные массивы правильно выравнены
- Сохраняйте промежуточные результаты: Копируйте форматированный JSON и результаты запросов для справки
Устранение распространённых проблем
Проблема: JSONPath возвращает пустой массив
Причина: Неправильный путь или выражение фильтра
Исправление: Тестируйте компоненты пути отдельно:
// Тестируйте каждый уровень
$.data
$.data.users
$.data.users[0]
$.data.users[0].department
// Затем добавляйте фильтры
$.data.users[?(@.department == 'engineering')]Проблема: Экспорт CSV выглядит неправильно
Причина: Вложенные объекты или массивы не выравнены
Исправление: Используйте JSONPath для извлечения конкретных полей перед преобразованием:
// Вместо полных объектов с вложенными данными:
$.users[*]
// Извлекайте только плоские поля:
$.users[*].['id', 'name', 'email']Проблема: Специальные символы в CSV
Причина: Значения содержат запятые, кавычки или переносы строк
Исправление: JSON в CSV конвертер автоматически обрабатывает экранирование. Если импорт не удаётся, попробуйте формат TSV вместо этого.
Реальный пример: GitHub API
Сценарий: Извлечь названия репозиториев и количество звёзд из API поиска GitHub.
Шаг 1: Получение и форматирование
curl "https://api.github.com/search/repositories?q=language:typescript&sort=stars" \
| pbcopy
# Вставьте в JSON форматтерШаг 2: Запрос с JSONPath
// Извлечь топ 5 репозиториев по звёздам
$.items[0:5].['name', 'stargazers_count', 'html_url']Шаг 3: Экспорт в CSV
name,stargazers_count,html_url
typescript,89432,https://github.com/microsoft/typescript
vscode,145234,https://github.com/microsoft/vscode
...Инструменты, используемые в этом процессе
- JSON форматтер - Форматирование, минификация и валидация JSON с определением синтаксических ошибок
- JSONPath тестер - Запрос и фильтрация JSON данных с помощью JSONPath выражений
- JSON в CSV конвертер - Экспорт JSON массивов в формат CSV/TSV для анализа в таблицах
Резюме
Полный процесс отладки API:
- Форматирование: Сделайте JSON читаемым с помощью JSON форматтера
- Запрос: Фильтруйте и извлекайте данные с помощью JSONPath тестера
- Экспорт: Преобразуйте в CSV с помощью JSON в CSV конвертера
Этот процесс преобразует сырые ответы API в полезные данные за минуты. Не требуется написание скриптов — только три браузерных инструмента, работающих вместе.