目录

n8n 数据结构教程:了解 items、JSON 与节点如何处理多条数据

学习 n8n 最重要、也最容易卡住的概念就是:节点之间传递的不是一条数据,而是由多条数据组成的列表(items)。

items 是什么样的

节点的输出在 JSON 视图中如下所示:

[
  { "name": "小明", "email": "ming@example.com" },
  { "name": "小华", "email": "hua@example.com" },
  { "name": "小美", "email": "mei@example.com" }
]

这是 3 个 items。在 n8n 内部,每个 item 实际上是:

{
  "json": { "name": "小明", "email": "ming@example.com" },
  "binary": { }
}
  • json:普通数据,表达式中的 $json 指的就是它。
  • binary:文件数据(图片、PDF、电子表格文件等),只有需要处理文件时才会出现。

节点会对每个 item 执行一次

这是 n8n 最重要的规则。假设上一个节点输出 3 条数据,下一个节点是「Send Email」节点:

[Google Sheets] ──3 items──▶ [Send Email]
                               发送 3 封邮件(每条数据发送一封)

你不需要编写循环,n8n 会自动处理。Send Email 节点中的 {{ $json.email }},处理第一条数据时是 ming@example.com,第二条时是 hua@example.com,以此类推。

节点右上角显示的数字(例如 3 items)就是输出的条数。

Split Out 之后的节点处理多条数据
执行后,连线上会显示每段传递了多少个 items;If 节点将数据分成 true / false 两路

“为什么我的消息发送了 5 次?”

最常见的原因是:上游节点输出了 5 个 items,下游的“发送消息”节点就会执行 5 次。解决方法:

  • 只想执行一次:在该节点的 Settings 中启用 Execute Once,只处理第一条数据。
  • 想把多条数据合并成一条消息:先用 Aggregate 或 Summarize 节点把多条数据合并成一条。

常用的数据转换节点

节点作用示例
Split Out把一条数据中的数组拆分成多条API 返回 { "orders": [...] },拆分成每笔订单一个 item
Aggregate把多条数据的字段合并成数组,变成一条把 10 笔订单合并,一次发送摘要
Summarize分组统计(求和、计数、平均值)按地区统计销售额
Limit只保留前 N 条只处理最新的 5 篇文章
Remove Duplicates删除重复数据同一个 Email 只发送一次
Sort排序按日期排序
Filter只保留符合条件的数据只处理金额大于 1000 的订单
Edit Fields (Set)新增、修改、删除字段只保留需要的字段

示例:拆分 API 返回的数组

HTTP Request 获取的数据常常是“一条 item,里面有一个数组”:

[
  {
    "results": [
      { "id": 1, "title": "文章 A" },
      { "id": 2, "title": "文章 B" }
    ]
  }
]

此时下游节点只会执行一次。添加一个 Split Out 节点,字段填 results,就会变成两条:

[
  { "id": 1, "title": "文章 A" },
  { "id": 2, "title": "文章 B" }
]
Split Out 将数组拆分成 3 条数据
Split Out:INPUT 是 1 条包含 results 数组的数据,OUTPUT 变成 3 条

项目配对(item linking)

n8n 会记住每条输出数据是由哪条输入数据生成的。因此在后续节点中,可以获取同一条数据在之前某个节点中的值:

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

意思是:“与当前这条数据对应的那条数据在 Google Sheets 节点中的 name”。表达式的完整说明见表达式教程。

多个输入:Merge 节点

当流程分成两条路径,又需要合并时,使用 Merge 节点:

模式说明
Append将两边的数据接在一起
Combine by matching fields按共同字段合并(类似 SQL 的 JOIN),例如用 email 将客户数据与订单对应起来
Combine by position第一条配第一条、第二条配第二条
Choose branch等两边都完成后,只输出其中一边

二进制数据(文件)

读取文件、下载图片、收到附件时,数据会放在 binary 中;在 OUTPUT 的 Binary 选项卡中可以预览或下载。常用节点:

  • Extract from File:从 CSV、Excel、PDF、JSON 文件中提取内容并转换为 items
  • Convert to File:将 items 转换为 CSV、Excel、JSON 文件
  • Read/Write Files from Disk:读写服务器上的文件(n8n 2.x 默认只允许访问特定文件夹)

小结

  • 节点之间传递的是 items 数组
  • 每个节点会对每条 item 执行一次,不需要自己编写循环
  • 用 Split Out 拆分,用 Aggregate 汇总,用 Merge 合并
  • 不想重复执行时,启用 Execute Once 或先合并数据

更新于 2026年10月12日