DevToys Pro

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

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

Рабочий процесс отладки API: Форматирование JSON → Запросы с JSONPath → Экспорт в CSV

13 мин чтения

Вы вызываете API и получаете минифицированный JSON с сотнями вложенных объектов. Вам нужно найти конкретных пользователей, извлечь их email-адреса и экспортировать в CSV для дальнейшего анализа. Это руководство проведёт вас через полный процесс отладки API с использованием трёх взаимосвязанных инструментов.

Сценарий: Отладка ответа API пользователей

Проблема: Сторонний API возвращает сложный JSON-ответ с данными пользователей. Вам нужно:

  1. Прочитать беспорядочный, минифицированный JSON
  2. Найти всех активных пользователей в отделе "engineering"
  3. Извлечь их имена, email и даты присоединения
  4. Экспортировать в 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 в удобочитаемый формат с правильными отступами.

Действия

  1. Откройте JSON форматтер
  2. Вставьте минифицированный JSON в область ввода
  3. Нажмите "Format" или нажмите Ctrl+Enter
  4. Установите отступ в 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)]

Действия

  1. Откройте JSONPath тестер
  2. Вставьте форматированный JSON в поле ввода JSON
  3. Введите JSONPath выражение в поле запроса
  4. Нажмите "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 для анализа в таблицах или импорта в базу данных.

Действия

  1. Скопируйте отфильтрованный JSON результат из JSONPath тестера
  2. Откройте JSON в CSV конвертер
  3. Вставьте отфильтрованный JSON во ввод
  4. Нажмите "Convert to CSV"
  5. Скачайте или скопируйте 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[*]

Советы по рабочему процессу

  1. Всегда форматируйте сначала: Чтение минифицированного JSON приводит к ошибкам
  2. Тестируйте JSONPath постепенно: Начните широко ($.data.users), затем добавляйте фильтры
  3. Валидируйте JSON перед запросами: Используйте JSON форматтер для выявления синтаксических ошибок
  4. Проверяйте структуру CSV: Убедитесь, что вложенные массивы правильно выравнены
  5. Сохраняйте промежуточные результаты: Копируйте форматированный 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:

  1. Форматирование: Сделайте JSON читаемым с помощью JSON форматтера
  2. Запрос: Фильтруйте и извлекайте данные с помощью JSONPath тестера
  3. Экспорт: Преобразуйте в CSV с помощью JSON в CSV конвертера

Этот процесс преобразует сырые ответы API в полезные данные за минуты. Не требуется написание скриптов — только три браузерных инструмента, работающих вместе.