Как импортировать JSON в n8n: Полное руководство
Импорт данных в формате JSON является фундаментальной операцией в n8n, позволяющей интегрировать внешние системы, обрабатывать API-ответы, загружать конфигурации и инициализировать рабочие процессы. n8n, будучи инструментом автоматизации с низким кодом, предоставляет несколько методов для работы с JSON, каждый из которых подходит для конкретных сценариев. Понимание этих методов критически важно для построения эффективных и надежных автоматизаций.
Основные методы импорта JSON в n8n
Существует три первичных способа загрузки и использования JSON-данных в n8n: использование узла «Code», использование узла «HTTP Request» и прямой ввод через выражение. Выбор метода зависит от источника данных и требуемой логики обработки.
1. Импорт JSON с помощью узла HTTP Request
Это наиболее распространенный метод получения JSON-данных из внешних источников, таких как REST API, веб-сервисы или публичные эндпоинты. Узел выполняет HTTP-запрос и возвращает ответ, который обычно автоматически парсится в объект JSON.
- Настройка узла: Добавьте узел «HTTP Request» на канвас рабочего процесса.
- Конфигурация метода: В настройках узла выберите метод запроса (GET, POST и т.д.). Для получения данных чаще используется GET.
- Указание URL: В поле «URL» введите полный адрес API или конечной точки, возвращающей JSON. Например,
https://api.example.com/data/users. - Обработка ответа: В секции «Response» рекомендуется установить флажок «Response Format» в значение «JSON». Это гарантирует, что n8n корректно распарсит ответ сервера в структурированные данные для последующих узлов.
- Запуск: Выполните узел. Ответ API будет доступен как выходные данные узла и может быть использован в следующих узлах через выражения.
- Сценарии использования: Создание сложных JSON структур, агрегация данных из нескольких источников, парсинг нестандартных строк JSON, применение сложной логики преобразования.
- Добавление узла: Перетащите узел «Code» на канвас.
- Написание кода: В редакторе кода вы можете определить JSON напрямую или обработать входящие данные.
Пример обработки ответа API:
После узла HTTP Request можно добавить узел «Set» для извлечения конкретных полей. Если ответ содержит массив пользователей, выражение {{ $json.body[0].email }} получит email первого пользователя.
2. Импорт и обработка JSON с помощью узла Code (JavaScript/Node.js)
Узел «Code» предоставляет максимальную гибкость для работы с JSON. Он позволяет писать пользовательский JavaScript код для создания, парсинга, трансформации или загрузки JSON данных.
Пример 1: Создание статического JSON объекта
// Возвращаем массив JSON объектов
return [
{
json: {
id: 1,
name: "Company A",
departments: ["Sales", "Support"]
}
}
];
Пример 2: Парсинг строки JSON
// Предположим, есть входной элемент с raw JSON строкой
const jsonString = items[0].json.rawData;
try {
const parsedData = JSON.parse(jsonString);
return [{ json: parsedData }];
} catch (error) {
throw new Error('Ошибка парсинга JSON: ' + error.message);
}
Пример 3: Агрегация данных из предыдущих узлов
// items содержит данные из предыдущего узла
const report = {
totalRecords: items.length,
processedAt: new Date().toISOString(),
records: items.map(item => item.json)
};
return [{ json: report }];
3. Прямой ввод JSON через выражения и параметры узлов
Многие узлы n8n позволяют вводить JSON-данные напрямую в поля выражений. Это полезно для задания конфигураций, небольших наборов тестовых данных или параметров запроса.
- Использование выражений: В любом поле, поддерживающем выражения (открывается кликом на значок >), можно определить JSON объект или массив.</li>
- Синтаксис: Используйте двойные фигурные скобки и апострофы для строк. Например, для поля «Filters» в узле «Google Sheets»:
{{ [{"field": "Status", "condition": "is", "value": "Active"}] }}. - Статический ввод: В некоторых узлах, таких как «Spreadsheet File», есть поле «JSON/XML to Set», куда можно напрямую вставить JSON строку для преобразования в табличную структуру.
Детальное сравнение методов импорта
| Метод | Назначение | Преимущества | Недостатки | Идеальный сценарий |
|---|---|---|---|---|
| HTTP Request | Получение данных из внешних API и сервисов. | Прямая интеграция, автоматический парсинг, поддержка аутентификации, кэширования. | Зависит от доступности внешнего сервиса, требует знания структуры API. | Загрузка данных из CRM, погодного API, биржевых котировок. |
| Code Node | Создание, сложная трансформация, парсинг, логика. | Максимальная гибкость и контроль, возможность использовать всю мощь JavaScript. | Требует навыков программирования, может быть менее производительным для очень больших данных. | Объединение данных из нескольких узлов, очистка невалидного JSON, генерация динамических структур. |
| Прямой ввод / Выражения | Задание конфигураций, небольших наборов данных, параметров. | Быстро и просто, не требует дополнительных узлов, удобно для тестирования. | Не подходит для больших объемов данных, статичен (если не используется с переменными). | Установка параметров фильтрации, отправка тестового запроса, настройка тела POST-запроса. |
Практический пример рабочего процесса: Импорт пользователей из API и сохранение в базу данных
Рассмотрим полный рабочий процесс, который получает список пользователей в JSON формате из публичного API, обрабатывает его и записывает результаты в Google Sheets.
- Узел «HTTP Request»: Настройте GET запрос на URL
https://jsonplaceholder.typicode.com/users. Установите «Response Format» в «JSON». - Узел «Code» (опциональная обработка): Добавьте для фильтрации или форматирования данных.
const simplifiedUsers = items[0].json.map(user => { return { id: user.id, fullName: user.name, email: user.email, city: user.address.city }; }); return [{ json: simplifiedUsers }]; - Узел «Google Sheets»: Выберите операцию «Append to Sheet». В поле «Data Mode» выберите «Auto-Map Input Data». n8n автоматически сопоставит ключи JSON (id, fullName, email, city) с заголовками столбцов таблицы.
Обработка ошибок и валидация JSON
При импорте JSON из ненадежных источников критически важна обработка ошибок.
- В узле HTTP Request: Используйте параметры «Continue on Fail» и «Retry on Fail» для управления поведением при ошибках сети или API.
- В узле Code: Всегда оборачивайте
JSON.parse()в блок try…catch. - Валидация структуры: После получения данных можно добавить узел «IF» для проверки наличия ожидаемых полей. Например:
{{ $json.someRequiredField === undefined }}. - Использование узла «Validate» (пользовательская разработка): Можно создать подпроцесс или функцию для строгой проверки структуры JSON по схеме.
Работа с большими файлами JSON и потоковая обработка
n8n обрабатывает данные в памяти, поэтому при работе с очень большими JSON-файлами (сотни мегабайт) могут возникнуть проблемы с производительностью.
- Рекомендации:
- По возможности запрашивайте у API данные частями (пагинация), используя параметры
limitиoffset. - Если файл локальный, рассмотрите возможность его предварительной разбивки на меньшие части внешними средствами.
- Используйте узлы, поддерживающие бинарные данные (как «Read/Write Files from Disk»), для промежуточного хранения, если это необходимо.
- По возможности запрашивайте у API данные частями (пагинация), используя параметры
- Ограничение: n8n не поддерживает потоковую обработку JSON «на лету» в классическом понимании. Все данные узла должны помещаться в память.
Экспорт и отладка JSON данных в n8n
Для отладки импортированных данных используйте следующие приемы:
- Узел «Debug»: Подключите его после узла, импортирующего JSON. Он покажет полную структуру данных, включая вложенные объекты и мета-информацию.
- Встроенный просмотр данных: Кликните на любой узел и нажмите «Execute Node». Во вкладке «Output» вы можете исследовать все элементы и их JSON-содержимое.
- Использование console.log в узле Code: Вывод отобразится во вкладке «Debug» панели выполнения рабочего процесса.
Ответы на часто задаваемые вопросы (FAQ)
Вопрос 1: Как импортировать локальный JSON-файл с компьютера в n8n?
Прямая загрузка файла с локального диска в облачный n8n невозможна. Используйте один из следующих обходных путей:
- Загрузите файл в облачное хранилище (Google Drive, S3, Dropbox) и используйте соответствующий узел n8n для его чтения.
- Если вы используете само-хостинговую версию n8n, вы можете разместить файл на том же сервере и прочитать его с помощью узла «Read/Write Files from Disk», указав абсолютный путь к файлу.
- Скопируйте содержимое JSON-файла и вставьте его в узел «Code» как строку, затем выполните
JSON.parse().
Вопрос 2: Почему мой JSON не парсится и данные отображаются как строка?
Это происходит, когда данные приходят как строка в формате JSON, а не как объект. Решения:
- В узле HTTP Request убедитесь, что «Response Format» установлен в «JSON».
- Если данные пришли из другого узла как строка, используйте узел Code с
JSON.parse(). - Проверьте, что JSON является валидным (нет лишних или недостающих запятых, кавычек). Используйте валидаторы JSON онлайн.
Вопрос 3: Как обратиться к глубоко вложенному свойству в JSON?
Используйте точечную нотацию или квадратные скобки в выражениях n8n.
- Пример:
{{ $json.apiResponse.data.users[0].contact.phone }} - Если название свойства содержит специальные символы или пробелы, используйте квадратные скобки и кавычки:
{{ $json["custom-field"] }}
Вопрос 4: Можно ли импортировать JSON и автоматически создать на его основе узлы?
Нет, n8n не имеет функции автоматической генерации рабочего процесса из JSON. Однако вы можете использовать JSON для динамического управления логикой:
- Хранить конфигурацию workflow (список URL, параметры) в JSON внутри узла «Code» или внешнего хранилища.
- Использовать данные JSON для условного выполнения веток (узел «IF») или динамического определения параметров в последующих узлах (например, URL для HTTP Request).
Вопрос 5: Как преобразовать JSON в табличный формат (например, CSV или для Google Sheets)?
n8n отлично справляется с этой задачей благодаря автоматическому маппингу:
- Если JSON представляет собой массив объектов с одинаковой структурой, большинство узлов, работающих с таблицами (Google Sheets, PostgreSQL, Spreadsheet File), автоматически распознают ключи объектов как заголовки столбцов.
- В узле Spreadsheet File выберите операцию «JSON to Sheet». Вставьте JSON строку или выражение, ссылающееся на JSON данные.
- Для сложных преобразований используйте узел Code, чтобы «выпрямить» (flatten) вложенные структуры перед отправкой в табличный узел.
Вопрос 6: Как импортировать JSON, содержащий массив, и обработать каждый элемент отдельно?
n8n автоматически разбивает выходные данные на отдельные элементы. Если узел HTTP Request возвращает массив из 10 объектов, следующие узлы выполнятся 10 раз, каждый раз получая на вход один элемент массива. Это основа цикличной обработки в n8n. Если вам нужно, чтобы следующий узел получил весь массив целиком как один вход, установите в его настройках параметр «Mode» в значение «Run Once for All Items».
Заключение
Импорт JSON в n8n — это гибкий и мощный процесс, поддерживаемый несколькими встроенными узлами. Ключ к успеху лежит в выборе правильного метода: HTTP Request для внешних данных, узел Code для сложных преобразований и прямой ввод для конфигураций. Понимание того, как n8n представляет JSON-данные в виде элементов и как обращаться к ним через выражения, является основой для построения сложных интеграций. Всегда учитывайте ограничения по размеру данных, реализуйте обработку ошибок и активно используйте инструменты отладки для проверки структуры импортированных данных.
Добавить комментарий