n8n Set节点:从初学者到高手的数据处理与转换指南

2026-02-18 8 0

场景导入:别再让数据格式折磨你了

笔者在 N8N 大学做咨询时,发现很多新手面对 API 返回的 JSON 数据束手无策。比如,你收到了一个包含用户生日的字段,但你想把它转换成“2023-10-01”这种标准日期格式,或者你想把多个字段合并成一个句子。这时,Set 节点 就是你的瑞士军刀。

很多人误以为 Set 节点只是简单的“变量赋值”,这是巨大的误解。它实际上是 n8n 中最强大的数据重塑工具之一。今天,笔者就带你从零开始,硬核拆解 Set 节点的实战技巧,让你告别手动拼接的痛苦。

核心实操:Set 节点的三大杀手锏

Set 节点在 n8n 中扮演着数据清洗与重组的角色。以下是三个从入门到进阶的实战场景。

1. 基础重塑:重命名与提取字段

假设你从 API 获取了用户数据,包含 user_iduser_email,但下游节点需要 idemail

操作步骤:

  1. 拖拽 Set 节点 到画布。
  2. 点击 Add Field,选择 String 类型。
  3. Name 处输入 id,在 Value 处使用表达式 {{ $json.user_id }}
  4. 同理添加 email 字段。

避坑点: 勾选 Keep Other Set Output Items(保留其他字段),否则你会丢失原始数据包中的所有其他信息,导致下游节点报错。

2. 进阶转换:数据类型强制转换

API 返回的数字经常被包裹在引号里(如 "12345"),这会导致计算失败。Set 节点可以强制转换类型。

操作步骤:

  1. 在 Set 节点中添加字段。
  2. Value 栏输入表达式 {{ parseInt($json.price) }}
  3. 或者使用 n8n 的便捷函数:在表达式编辑器中选择 Number 类型转换。

笔者经验: 在处理日期时,务必使用 {{ new Date($json.timestamp).toISOString() }},这能统一时间格式,避免时区带来的混乱。

3. 高手玩法:对象合并与数组处理

这是 Set 节点最被低估的功能。你可以利用 “Rename Keys”“JSON” 模式来重构整个数据结构。

场景:你需要将多个字段合并为一个嵌套对象。

  • 切换 Set 节点模式为 JSON
  • 直接输入新的 JSON 结构,例如:

{ "user": { "name": "{{ $json.first_name }} {{ $json.last_name }}", "status": "active" } }

这样你就轻松实现了一级结构扁平化转嵌套,或者反之。这是构建 Webhook 响应或 API 请求 Payload 的必备技巧。

避坑指南:Set 节点的常见陷阱

在 N8N 大学的实战训练中,Set 节点最容易出现以下两个问题:

  1. 丢失元数据 (Binary Data): 如果你的工作流处理图片或文件,Set 节点默认不会传递二进制数据。你必须勾选 Include Binary Data,否则文件会丢失。
  2. 表达式语法错误: 很多新手在 Value 栏直接写死字符串,却忘了切换到表达式模式(点击输入框右侧的 {} 图标)。如果字段值看起来不对劲,检查一下是否处于“文本模式”。

FAQ 问答

Q1: Set 节点和 Edit Fields (Set) 节点有什么区别?

A: 在 n8n 1.0 版本后,官方更推荐使用 Edit Fields (Set),它界面更友好,支持拖拽映射。但底层逻辑一致,都是为了修改数据结构。老用户习惯叫 Set 节点,新用户请优先使用 Edit Fields。

Q2: 如何用 Set 节点清空所有字段?

A: 在 Set 节点中,不要勾选 Keep Other Set Output Items。然后在 Fields to Set 中只添加你想要保留的字段,其余字段会被自动丢弃,实现“瘦身”效果。

Q3: Set 节点能处理数组数据吗?

A: 可以,但需要配合 Split Out 节点。通常建议先用 Split Out 将数组拆分成独立的 Item,再用 Set 节点处理每个单独的数据项,这样逻辑最清晰。

总结与资源

Set 节点是 n8n 数据流的“整形医生”。从简单的字段重命名,到复杂的 JSON 结构重塑,掌握它意味着你真正理解了 n8n 的数据流转机制。不要害怕表达式,多动手测试,你会发现自动化处理数据的快感。

想获取更多 n8n 硬核教程?欢迎访问 N8N大学 (n8ndx.com),这里有你需要的每一个实战案例。

相关文章

n8n Error Handling 节点报错太心烦?试试这些更灵活的替代方案
n8n 节点报错了?用 Error Handling 让它自动重试并通知你
n8n Wait节点在数据同步中的延迟控制实战
n8n Wait节点免费版:我能用它实现定时任务吗?
n8n Error Handling节点:当自动化流程“翻车”时,如何让它自动“扶起来”?
n8n Error Handling节点报错常见问题解决

发布评论