В этом уроке вы узнаете, как видит ваши данные n8n — чтобы понимать механику его работы
Итак, мы знаем, что n8n — это сервис автоматизации. Он передает данные от первого узла workflow до последнего в цепочке. Тем самым совершая полезные для нас действия.
О самих рабочих процессах мы поговорим в следующем уроке. А сейчас подробно остановимся на понятии данных. Мы узнаем про форматы данных в n8n, как выглядит их структура и как происходит их передача от узла к узлу.
JSON и Binary — два вида данных
Данные в n8n бывают двух видов: в формате JSON и Binary.
Первый формат, JSON, отвечает за передачу структурированных данных в текстовом виде. Он был разработан для работы с объектами языка Javascript, но потом стал независимым и популярным во многих других языках. Это один из основных способов для множества веб-сервисов обмениваться данными через API. Есть и другие виды форматирования данных для обмена между приложениями, например, XML.
Бинарные данные — это уже информация не в текстовом, а двоичном виде. С её помощью в n8n передаются, например, изборажения. Или информация, прочитанная из файла. О бинарных данных мы поговорим дальше в курсе, когда будем изучать работу с файлами.
В нашем курсе мы в основном будем работать именно с данными в формате JSON, а не с бинарными данными. Представление JSON вы видите на правой Панели результатов вашего узла, во вкладке JSON.

И для начала давайте разберемся, что такое JSON, и как работать с этим форматом.
Что такое JSON?
Запись JSON, её еще называют JSON-объектом, можно представить как набор характеристик какого-то физического объекта. Например, имя, рост, возраст человека, курит ли он.
📖
JSON-объект
Формально, JSON-объект представляет собой набор пар “Ключ”-“Значение”. Каждая такая пара перечисляется через запятую, а сам объект заключается в фигурные скобки.
Давайте покажем JSON-объект на примере человека, которого зовут Ян. Ему 27 лет, он не курит, у него есть собака Чарли и хомяк Никсон, а ездит он на красном Chevrolet Camaro. Давайте посмотрим, как эта запись будет выглядеть в JSON-формате.
Начнём с пустого объекта — фигурных скобок, между которыми ничего нет. В записи JSON для читаемости фигурные скобки обычно находятся на отдельных строчках.
{
}
Теперь давайте добавим имя в этот объект. В самом простом варианте это будет выглядеть так:
{
name: "Ян"
}
Видно, что здесь появилась новая строчка с информацией — свойство объекта. Чтобы легче читать, слева появляется отступ.
В левой части свойства находится его название name
, а справа — значение “Ян”. В нашем случае это свойство типа строка, поэтому “Ян” заключено в кавычки.
В зависимости от контекста свойство еще можно называть ключом (когда речь идет о паре “ключ”-“значение”) или “полем” (когда мы говорим о табличном виде нескольких записей).
Название свойства name
у нас записано латиницей, без специальных символов и в одно слово. При попытке обойти любое из этих ограничение в n8n или любом языке программирования получится ошибка. Если мы хотим более широких возможностей, название свойства также окружается кавычками:
{
"Имя /человека/": "Ян"
}
Поскольку на панели результатов вы будете видеть JSON-ключи в кавычках, то в этом примере мы также будем ставить их .
Давайте добавим возраст:
{
"name": "Ян",
"age": 27
}
При перечислении свойств они разделяются запятыми. Числовые значения кавычками не обрамляются.
Для значений логических свойств используются два слова: true
— истина и false
— ложь. Поскольку Ян не курит, получается вот так:
{
"name": "Ян",
"age": 27,
"is_smoking": false
}
Теперь можно добавить информацию о его машине. Здесь напрашивается представить её в виде объекта со свойствами “модель” и “цвет”. Да, объекты могут выступать значениями свойств.
{
"name": "Ян",
"age": 27,
"is_smoking": false,
"car": {
"model": "Chevrolet Camaro",
"color": "красный"
}
}
Наконец, вспомним, что у Яна есть питомцы. В этом случае нам поможем массив.
📖
Массив
Массив […] — это тоже набор данных, как объект, только он упорядоченный. В нем есть первый, второй, последний элемент. Массив может быть и пустым. Он может состоять из разнотипных данных — на первом месте строка, на втором — число, а на третьем месте — вообще объект. Элементы массива заключены между квадратными скобками.
У нас получится:
{
"name": "Ян",
"age": 27,
"is_smoking": false,
"car": {
"model": "Chevrolet Camaro",
"color": "красный"
},
"pets": [
"Чарли",
"Никсон"
]
}
В массиве pets есть одна проблема — неясно, кто из них собака, а кто — хомяк. Чтобы это прояснить, вместо строк в массиве снова запишем объекты. И в свойстве animal
укажем его тип, а в name
— его имя.
Окончательно получаем:
{
"name": "Ян",
"age": 27,
"is_smoking": false,
"car": {
"model": "Chevrolet Camaro",
"color": "красный"
},
"pets": [
{
"animal": "собака",
"name": "Чарли"
},
{
"animal": "хомяк",
"name": "Никсон"
}
]
}
Теперь вы знаете всё, что нужно, чтобы понимать запись JSON-объектов. Однако встаёт вопрос, как извлекать данные из таких объектов?
Об этом вы узнаете немного позже, когда мы познакомимся с передачей данных в рабочих процессах n8n.
Структура данных в n8n
Итак, мы уже знаем, что для обработки структурированных данных n8n использует формат JSON. Кроме того, мы знаем, что n8n работает сразу с целым набором таких данных. Во вводном курсе это был набор университетов с особыми учебными программами.
n8n представляет набор таких данных как массив объектов, оформленных особым образом. Для простоты мы пока будем считать, что вместе с JSON не передаются бинарные данные (например, изображение).
Допустим, у нас есть два человека, информацию о которых мы видим в окне JSON вот так:
[
{
"name": "Ян",
"age": 27
},
{
"name": "Полина",
"age": 25
}
]
На самом деле, для самого n8n всё устроено немного сложнее. Это знание нам понадобится, чтобы использовать значения уже совсем скоро.
У каждого элемента данные лежат в специальном объекте json. За двумя косыми чертами (//) я оставил комментарии — они никак не влияют на корректность записи (за исключением места после закрывающей скобки ]
.
[ //здесь начинается массив с нашими объектами
{ //здесь начинается первый объект
"json": {
"name": "Ян",
"age": 27
}
}, //здесь заканчивается первый объект
{ //здесь начинается второй объект
"json": {
"name": "Полина",
"age": 25
}
} //здесь заканчивается второй объект
]
Надо отметить, что для n8n вовсе необязательно, чтобы у разных записей совпадали все свойства. Такой вариант тоже ок
[
{
"json": {
"name": "Ян"
}
},
{
"json": {
"age": 25
}
}
]
В более общем виде, если кроме JSON еще бинарные данные, то первый элемент данных выглядит вот так (остальные указаны как многоточие):
[
{
// Каждый элемент содержит свойство "json". Оно может быть и пустым: {}.
// Любой вид JSON-данных допустим. Так что массивые и вложенные объекты тоже допустимы.
"json": { // Данные, которыми оперирует n8n (обязательно)
// Эти данные — только пример. Могут быть любыми данными формата JSON
"jsonKeyName": 'keyValue',
"anotherJsonKey": {
"lowerLevelJsonKey": 1
}
},
// Бинарные данные элемента. Большинство узлов в n8n их не содержат (опционально)
"binary": {
// Название ключа "binaryKeyName" — только для примера. Возможен любой вариант.
"binaryKeyName": {
"data": '....', // Двоичные данные в кодировке Base64 (обязательно)
"mimeType": "image/png", // Необязательно, но по возможности следует установить
"fileExtension": "png", // Необязательно, но по возможности следует установить
"fileName": "example.png", // Необязательно, но по возможности следует установить
}
}
},
...
]
Упражнения
Давайте потренируемся. У нас есть несколько примеров записи JSON-данных и то, как они могут выглядеть в n8n. Разверните задачу, посмотрите на код и попробуйте ответить — корректный он или нет. Проверьте себя, развернув ответ.
1. Корректна ли запись JSON-данных?
{
[
"имя": "Сергей"
]
}
2. Корректна ли запись JSON-данных?
[
{
"Пирог 234;/": "Ян",
"age": 27
},
{
"Пирог 234;/": "Полина",
"age": 25
}
]
3. Корректна ли запись JSON-данных?
[
{
"id": "23423532",
"name": "Jay Gatsby",
"email": "gatsby@west-egg.com",
"notes": "Keeps asking about a green light??",
"country": "US",
"created": "1925-04-10"
},
{
"id": "23423533",
"name": "José Arcadio Buendía",
"email": "jab@macondo.co",
"notes": "Lots of people named after him. Very confusing",
"country": "CO",
"created": "1967-05-05"
}
}
]
4. Корректна ли запись JSON-данных?
[
{
"name": "Ян",
"age": 27,
"is_smoking": "false",
"car": {
"model": Chevrolet Camaro,
"color": красный
},
"pets": [
]
]
5. Корректна ли запись JSON-данных?
[
{json: {
"Полное имя": "Шерлок Холмс",
"Возраст": 46,
"Город": "Лондон",
"Друзья": ["Доктор Ватсон", "Инспектор Лестрейд"],
"Основные интересы": "Криминальный мир"
},
},
{json: {
"Полное имя": "Джон Ватсон",
"Возраст": 44,
"Город": "Лондон",
"Друзья": ["Шерлок Холмс", "Инспектор Лестрейд"],
"Основные интересы": "Медицина"
},
},
]
6. Корректна ли запись данных для n8n?
[ //здесь начинается массив с нашими объектами
{ //здесь начинается первый объект
{
json: {"name": "Ян", "age": 27}
}
}, //здесь заканчивается первый объект
{ //здесь начинается второй объект
{
json: {"name": "Полина", "age": 25}
}
} //здесь заканчивается второй объект
]
7. Корректна ли запись данных для n8n?
[
{json: {
"id": "23423532",
"name": "Jay Gatsby",
"email": "gatsby@west-egg.com",
}
},
{json: {
"country": "CO",
"created": "1967-05-05"
}
}
]
Отметьте все решенные задачи на странице шаблона упражнений Как выглядят данные в n8n