拆解复杂 JSON:Item Lists 节点将 Array 数组拆分为多条独立数据
兄弟们,我是 N8N大学 的主编。今天咱们聊一个在 n8n 开发中几乎人人都会遇到,但又容易让人抓狂的场景:处理嵌套的 JSON 数据。

你是不是也遇到过这种情况?API 返回了一大坨数据,里面有个数组(Array),你想对数组里的每个元素单独操作,结果 n8n 的后续节点只认第一条数据,剩下的全被“吞”了。别急,这事儿用 Item Lists 节点就能轻松搞定。今天,笔者就带你彻底搞懂如何用它把复杂的 JSON 数组拆解成多条独立数据。
一、痛点复现:为什么我们需要拆分数组?
在实际工作中,API 返回的数据往往不是“扁平”的。比如你调用一个电商接口获取订单详情,返回的 JSON 结构里通常包含一个 items 数组,里面存放着该订单下所有商品的信息。
如果你不拆分,n8n 默认只会把整个 items 数组当作一条数据(Item)传给下一个节点。这意味着你无法针对每个商品单独去发邮件、写数据库或者调用其他 API。这就好比你手里有一袋子苹果,但你只想一次拿一个出来削皮,结果袋子不解开,你只能一次把整袋拿过去,效率极低且无法精细化操作。
二、核心实操:如何用 Item Lists 节点“一分为多”
准备好了吗?咱们直接上干货。假设我们有一个 JSON 数据如下,目标是把 products 里的三个商品拆分成 3 条独立的数据流。
{
"orderId": "2023001",
"user": "张三",
"products": [
{ "name": "机械键盘", "price": 299 },
{ "name": "电竞鼠标", "price": 199 },
{ "name": "显示器", "price": 899 }
]
}
步骤 1:准备数据源
在你的 Workflow 中,使用 Set 节点(或者 Manual 节点)模拟上述 JSON 数据。确保你的数据结构里包含那个致命的数组 products。
步骤 2:拖拽 Item Lists 节点(关键步骤)
在画布上添加一个 Item Lists 节点。这是 n8n 官方专门用来处理列表数据的瑞士军刀。
- **操作模式 (Operation)**:选择 Split Out Items(拆分项目)。这是我们要的核心功能,它会把数组里的每个元素变成一个独立的 Item。
- **字段名称 (Field to Split Out)**:这里必须填入你要拆分的数组字段名。在我们的例子中,填入
products。注意,这里只填字段名,不需要加.json之类的后缀,n8n 会自动识别。
步骤 3:验证与后续处理
点击 Execute Node(执行节点)。你会发现 Item Lists 输出的数据不再是 1 条,而是变成了 3 条(对应数组中的 3 个对象)。每一条数据里,都包含了原本的上下文(orderId, user)以及独立拆分出来的商品信息(name, price)。
此时,你在后面接一个 HTTP Request 或者 Set 节点,就能对这 3 条数据分别进行处理了。比如在 HTTP Request 中使用 {{ $json.name }},它会循环执行 3 次,分别请求机械键盘、鼠标和显示器的相关数据。
三、避坑指南:这些坑笔者替你踩过了
虽然 Item Lists 很强,但新手很容易在细节上翻车。这里分享两个实战中最高频的报错场景。
坑点 1:路径填错导致 "no data to split"。
很多同学习惯直接复制 JSON 里的完整路径,比如data.products。但在 Item Lists 的字段框里,如果你不确定层级,建议先用 Set 节点把目标数组提升到根层级,或者仔细检查层级。如果数组嵌套太深,建议先用 Set 节点把目标数组赋值给一个临时变量,再对这个变量进行拆分。
坑点 2:拆分后丢失上下文。
Item Lists 在拆分时,默认会保留原始数据的其他字段(如上面的 orderId)。但如果你在拆分后,发现后续节点拿不到 orderId 了,检查一下你的数据结构是否被意外覆盖。通常情况下,Item Lists 会智能合并,但如果数据量巨大,建议在拆分前用 Set 节点把关键的上下文信息(如 orderId)单独提取出来,作为独立字段存在。
四、进阶玩法:不仅仅是拆分
Item Lists 节点除了 Split Out Items,其实还有个非常有用的 Sort(排序)和 Limit(限制数量)功能。
比如,你拆分了 1000 条数据,但只想取前 10 条,或者想按价格从高到低排序后再处理。完全不需要写代码,直接在 Item Lists 里设置 Limit 为 10,或者设置 Sort 规则即可。这对于清洗数据、优先处理重要任务来说,简直是神器。
另外,如果你处理的是 CSV 或者 Excel 导入的数据,Item Lists 同样适用。很多时候我们导入的数据是一行一行的,但中间某个字段是逗号分隔的字符串(例如 "苹果,香蕉,橘子")。你可以先用 Split String 节点把字符串转成数组,再用 Item Lists 拆分,逻辑是一模一样的。
五、FAQ:你可能还想问
Q: 拆分后数据量太大,导致工作流运行缓慢怎么办?
A: 这是一个典型的性能问题。如果数组包含成千上万条数据,不建议一次性拆分并在 n8n 内循环处理。建议在源头(API 请求端)进行分页请求(Pagination),每次只拉取少量数据,或者使用 n8n 的 Split in Batches 节点来控制并发量,而不是一次性把所有数据都塞进内存。
Q: 拆分出来的数据如何再合并回去?
A: 这是一个逆向需求。如果你处理完数组里的每一项后,需要聚合结果,可以使用 Aggregations 节点(通常在 Item Lists 之后)。或者,利用 n8n 的 Wait 节点配合 ID 进行状态同步。但通常建议在设计 Workflow 时尽量保持数据流的扁平化,拆分后各自处理,最后通过 Webhook 回传或写入统一数据库即可,不要强行在 n8n 内做复杂的内存聚合。
Q: 为什么我看不到 Item Lists 节点?
A: 请确保你的 n8n 版本是最新的。Item Lists 是官方核心节点,通常默认安装。如果找不到,检查你的节点设置里是否隐藏了非核心节点,或者尝试在搜索框输入 "Item Lists" 全称。
总结与资源
拆解 JSON 数组是 n8n 自动化进阶的必经之路。Item Lists 节点就是那把打开结构化数据大门的钥匙。记住核心逻辑:找到数组 -> 配置 Split Out -> 享受多条数据流带来的灵活性。
如果你在实操中遇到了更诡异的数据结构,欢迎在 N8N大学 的评论区留言,笔者会定期挑选典型问题进行拆解。保持学习,保持自动化!