Contenido

Estructura de datos en n8n: tutorial sobre items, JSON y procesamiento de datos

El concepto más importante de n8n, y también el que más suele confundir, es este: entre los nodos no se transmite un único dato, sino una lista de varios datos (items).

Cómo son los items

La salida de un nodo se ve así en la vista JSON:

[
  { "name": "Juan", "email": "ming@example.com" },
  { "name": "Lucía", "email": "hua@example.com" },
  { "name": "Ana", "email": "mei@example.com" }
]

Estos son 3 items. Internamente, cada item en n8n tiene este aspecto:

{
  "json": { "name": "Juan", "email": "ming@example.com" },
  "binary": { }
}
  • json: datos normales; $json en una expresión hace referencia a ellos.
  • binary: datos de archivos (imágenes, PDF, hojas de cálculo, etc.); solo aparece cuando necesitas procesar archivos.

Los nodos se ejecutan una vez por cada item

Esta es la regla más importante de n8n. Supongamos que el nodo anterior genera 3 elementos y el siguiente es el nodo «Send Email»:

[Google Sheets] ──3 items──▶ [Send Email]
                               Envía 3 correos (uno por cada elemento)

No tienes que escribir un bucle: n8n se encarga automáticamente. En el nodo Send Email, {{ $json.email }} vale ming@example.com al procesar el primer elemento y hua@example.com al procesar el segundo, y así sucesivamente.

El número que aparece en la esquina superior derecha del nodo (por ejemplo, 3 items) indica cuántos elementos ha generado.

El nodo procesa varios datos después de Split Out
Después de la ejecución, las conexiones muestran cuántos items se transmitieron en cada tramo; el nodo If divide los datos en dos rutas: true y false

«¿Por qué se envió mi mensaje 5 veces?»

La causa más común es que el nodo anterior generó 5 items, así que el nodo de envío de mensajes se ejecutó 5 veces. Solución:

  • Si quieres ejecutarlo una sola vez: activa Execute Once en Settings del nodo para procesar solo el primer elemento.
  • Si quieres combinar varios elementos en un solo mensaje: primero usa el nodo Aggregate o Summarize para combinarlos en un elemento.

Nodos de transformación de datos habituales

NodoFunciónEjemplo
Split OutDivide el array de un elemento en varios elementosUna API devuelve { "orders": [...] }; crea un item por cada pedido
AggregateCombina campos de varios elementos en un array y los convierte en unoCombina 10 pedidos y envía un resumen de una vez
SummarizeAgrupa y calcula estadísticas (suma, recuento, promedio)Calcula las ventas por región
LimitConserva solo los primeros N elementosProcesa solo los 5 artículos más recientes
Remove DuplicatesElimina los datos duplicadosEnvía solo un correo a cada dirección
SortOrdenaOrdena por fecha
FilterConserva solo los datos que cumplen una condiciónProcesa solo los pedidos con un importe superior a 1000
Edit Fields (Set)Añade, modifica o elimina camposConserva solo los campos necesarios

Ejemplo: dividir el array devuelto por una API

A menudo, los datos obtenidos con HTTP Request son «un item que contiene un array»:

[
  {
    "results": [
      { "id": 1, "title": "Artículo A" },
      { "id": 2, "title": "Artículo B" }
    ]
  }
]

En este caso, el nodo siguiente solo se ejecuta una vez. Añade un nodo Split Out y escribe results en el campo; obtendrás dos elementos:

[
  { "id": 1, "title": "Artículo A" },
  { "id": 2, "title": "Artículo B" }
]
Split Out divide un array en 3 elementos
Split Out: INPUT contiene 1 elemento con un array results y OUTPUT genera 3 elementos

Vinculación de items (item linking)

n8n recuerda de qué elemento de entrada procede cada dato de salida. Por eso, en nodos posteriores puedes obtener el valor de ese mismo elemento en un nodo anterior:

{{ $('Google Sheets').item.json.name }}

Significa: «el name del nodo Google Sheets correspondiente al elemento que se está procesando». Encontrarás una explicación completa de las expresiones en el tutorial de expresiones.

Varias entradas: nodo Merge

Cuando el flujo se divide en dos rutas y luego quieres volver a unirlas, usa el nodo Merge:

ModoDescripción
AppendAñade los datos de ambas rutas, uno tras otro
Combine by matching fieldsCombina según campos comunes (como un JOIN de SQL); por ejemplo, vincula los datos de clientes y pedidos mediante email
Combine by positionEmpareja el primer elemento con el primero, el segundo con el segundo, y así sucesivamente
Choose branchEspera a que terminen ambas rutas y solo genera los datos de una de ellas

Datos binarios (archivos)

Al leer archivos, descargar imágenes o recibir adjuntos, los datos se guardan en binary. En la pestaña Binary de OUTPUT puedes previsualizarlos o descargarlos. Nodos habituales:

  • Extract from File: extrae contenido de archivos CSV, Excel, PDF y JSON y lo convierte en items
  • Convert to File: convierte items en archivos CSV, Excel o JSON
  • Read/Write Files from Disk: lee y escribe archivos en el servidor (n8n 2.x, de forma predeterminada, solo permite ciertas carpetas)

Resumen

  • Entre los nodos se transmite un array de items.
  • Cada nodo se ejecuta una vez por cada item; no necesitas escribir bucles.
  • Usa Split Out para dividir, Aggregate para agrupar y Merge para combinar.
  • Si no quieres ejecuciones repetidas, activa Execute Once o combina primero los datos.

Actualizado 12 de octubre de 2026