Перейти к содержимому

Структура данных

Формат данных в n8n — items, json, binary, метаданные

В n8n данные передаются между нодами в виде items — массива объектов.

[
{
"json": {
"id": 1,
"name": "John",
"email": "john@example.com"
}
},
{
"json": {
"id": 2,
"name": "Jane",
"email": "jane@example.com"
}
}
]

Каждый item содержит:

ПолеТипОписание
jsonObjectОсновные данные
binaryObjectБинарные данные (файлы)
pairedItemObjectСвязь с исходным item

Основной контейнер для данных:

{
"json": {
"любой_ключ": "любое_значение",
"nested": {
"object": true
},
"array": [1, 2, 3]
}
}

Для файлов и бинарных данных:

{
"json": { "fileName": "image.png" },
"binary": {
"data": {
"data": "base64_encoded_content...",
"mimeType": "image/png",
"fileName": "image.png",
"fileSize": 12345
}
}
}
// В Expression
{{ $json.fieldName }}
{{ $json.nested.value }}
{{ $json["field-with-dash"] }}
// Получить binary данные
{{ $binary.data }}
// Метаданные файла
{{ $binary.data.fileName }}
{{ $binary.data.mimeType }}
МетодОписание
$input.all()Все items
$input.first()Первый item
$input.last()Последний item
$input.itemТекущий item
// Все items
{{ $input.all() }}
// Первый item
{{ $input.first().json.name }}
// Количество items
{{ $input.all().length }}
// Данные из конкретной ноды
{{ $('HTTP Request').item.json.data }}
// Все items из ноды
{{ $('HTTP Request').all() }}
// Первый item
{{ $('HTTP Request').first().json }}
МетодОписание
$('Node').all()Все items
$('Node').first()Первый item
$('Node').last()Последний item
$('Node').itemСоответствующий item
$('Node').itemMatching(index)Item по индексу
// В Code ноде
const items = $input.all();
return items.map(item => ({
json: {
// Переименование полей
userId: item.json.id,
fullName: item.json.name,
// Добавление полей
createdAt: new Date().toISOString(),
// Вычисляемые поля
isAdult: item.json.age >= 18
}
}));
const items = $input.all();
return items.filter(item =>
item.json.status === 'active'
);
const items = $input.all();
const total = items.reduce((sum, item) =>
sum + item.json.amount, 0
);
return [{ json: { total } }];
{
"json": {
"user": "John",
"orders": [
{ "id": 1, "total": 100 },
{ "id": 2, "total": 200 }
]
}
}

Нода Split Out разбивает массив на отдельные items:

До: 1 item с массивом [a, b, c]
После: 3 items: a, b, c

Нода Aggregate объединяет items в массив:

До: 3 items: a, b, c
После: 1 item с массивом [a, b, c]
ТипПример
String"Hello"
Number42, 3.14
Booleantrue, false
Nullnull
ТипПример
Object{ "key": "value" }
Array[1, 2, 3]
Date"2024-01-15T10:30:00Z"
// В Expression
{{ typeof $json.value }}
// В Code
if (typeof item.json.value === 'string') {
// ...
}
ПеременнаяОписание
$jsonJSON текущего item
$binaryBinary данные текущего item
$itemIndexИндекс текущего item
$runIndexНомер выполнения в цикле
$nowТекущее время (DateTime)
$todayСегодняшняя дата
// Добавить данные из lookup
const users = $input.all();
const roles = $('Get Roles').all();
return users.map(user => {
const role = roles.find(r =>
r.json.userId === user.json.id
);
return {
json: {
...user.json,
role: role?.json.name || 'unknown'
}
};
});