场景导入:别再让数据格式折磨你了
笔者在 N8N 大学做咨询时,发现很多新手面对 API 返回的 JSON 数据束手无策。比如,你收到了一个包含用户生日的字段,但你想把它转换成“2023-10-01”这种标准日期格式,或者你想把多个字段合并成一个句子。这时,Set 节点 就是你的瑞士军刀。
很多人误以为 Set 节点只是简单的“变量赋值”,这是巨大的误解。它实际上是 n8n 中最强大的数据重塑工具之一。今天,笔者就带你从零开始,硬核拆解 Set 节点的实战技巧,让你告别手动拼接的痛苦。
核心实操:Set 节点的三大杀手锏
Set 节点在 n8n 中扮演着数据清洗与重组的角色。以下是三个从入门到进阶的实战场景。
1. 基础重塑:重命名与提取字段
假设你从 API 获取了用户数据,包含 user_id 和 user_email,但下游节点需要 id 和 email。
操作步骤:
- 拖拽 Set 节点 到画布。
- 点击 Add Field,选择 String 类型。
- 在 Name 处输入
id,在 Value 处使用表达式{{ $json.user_id }}。 - 同理添加
email字段。
避坑点: 勾选 Keep Other Set Output Items(保留其他字段),否则你会丢失原始数据包中的所有其他信息,导致下游节点报错。
2. 进阶转换:数据类型强制转换
API 返回的数字经常被包裹在引号里(如 "12345"),这会导致计算失败。Set 节点可以强制转换类型。
操作步骤:
- 在 Set 节点中添加字段。
- 在 Value 栏输入表达式
{{ parseInt($json.price) }}。 - 或者使用 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 节点最容易出现以下两个问题:
- 丢失元数据 (Binary Data): 如果你的工作流处理图片或文件,Set 节点默认不会传递二进制数据。你必须勾选 Include Binary Data,否则文件会丢失。
- 表达式语法错误: 很多新手在 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),这里有你需要的每一个实战案例。