news 2026/9/29 6:36:34

【n8n教程】:Set 节点,实现数据转换魔法!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【n8n教程】:Set 节点,实现数据转换魔法!

【n8n教程】:Set 节点,实现数据转换魔法!

在 n8n 工作流中,数据的转换和处理是自动化的核心。Set 节点(编辑字段节点)是 n8n 最强大的数据操作工具,它允许你创建、修改、重命名或删除工作流中的数据字段,就像一把数据处理的"瑞士军刀"。本教程将带你从零开始,通过实践案例快速掌握 Set 节点的所有核心功能。

点击获取最新AI资讯、n8n工作流、开发经验分享

Set 节点是什么?为什么你需要它?

Set 节点的核心作用是让你完全控制工作流中的数据结构。无论数据从哪里来(API、数据库、表单等),Set 节点都能帮你将原始、混乱的数据转换成你需要的格式。

想象这样一个场景:你从一个 API 获取了学生数据,其中名字被分成"firstName"和"lastName"两个字段,但你想在数据库中存储为单一的"fullName"字段。这就是 Set 节点大显身手的时候。它不仅能合并字段,还能进行计算、条件判断、格式转换,甚至添加时间戳。

核心概念:两种工作模式

Set 节点提供了两种不同的模式来满足不同的使用场景:

模式一:手动映射(Manual Mapping)

手动映射是初学者的最佳选择。这种模式提供了直观的图形界面,你可以逐个添加或修改字段,无需编写代码。

如何使用手动映射:

  1. 打开 Set 节点,选择Mode>Manual Mapping
  2. 点击Add Field按钮添加新字段
  3. 输入字段名称(例如"fullName")
  4. 在值字段中输入内容或表达式

关键技巧:你可以从左侧的INPUT面板拖拽前一个节点的数据到值字段中,这样 n8n 会自动生成表达式。例如,如果你拖拽firstName字段,n8n 会为你写入{{ $json.firstName }},这是一个表达式,用来动态获取前一个节点的 firstName 值。

模式二:JSON 输出(JSON Output)

JSON 模式适合需要创建复杂数据结构或大量字段的场景。你直接编写 JSON 代码来定义所有字段,这给了你更多的灵活性。

JSON 模式的优势:

  • 可以快速批量创建多个字段
  • 能够构建嵌套的对象和数组结构
  • 更容易复制粘贴复杂的配置

JSON 模式示例:

{"fullName":"{{ $json.firstName }} {{ $json.lastName }}","email":"{{ $json.email }}","joinDate":"{{ $now.toISOString() }}","status":"active"}

关键参数详解:让数据处理更精准

1. Keep Only Set Fields(仅保留设置的字段)

这个选项决定了输出数据中包含哪些内容。

  • 启用:工作流只输出你在 Set 节点中明确定义的字段,所有其他输入数据都会被丢弃。这很有用,特别是当前一个节点返回了许多不需要的字段时。
  • 禁用(默认):保留所有来自前一个节点的原始数据,加上你新添加或修改的字段。这是更安全的选择,不会意外丢失数据。

2. Include Binary Data(包含二进制数据)

如果你的工作流处理文件、图片等二进制数据,启用此选项可确保这些数据不会在 Set 节点处丢失。

3. Support Dot Notation(支持点表示法)

默认情况下,如果你设置一个名为address.city的字段,n8n 会创建一个嵌套的 JSON 对象结构,就像这样:

{"address":{"city":"北京"}}

如果禁用此选项,就会变成平级的字段address.city(键名包含点)。

4. Ignore Type Conversion Errors(忽略类型转换错误)

启用此选项让 n8n 在类型不匹配时不报错,例如试图将文本转换为数字时。

实战技巧:五个常见使用场景

技巧一:合并多个字段

场景:从 API 获取的数据中,用户名被分成first_name和last_name,你需要合并成fullName。

在 Set 节点中的配置:

  • 字段名:fullName
  • 字段值:{{ $json.first_name }} {{ $json.last_name }}

运行后,输出数据会包含一个新的fullName字段,值为两个名字的组合。

技巧二:数值计算和转换

场景:学生的数学和英文成绩分别存储,你需要计算平均分。

配置方法:

  • 字段名:averageScore
  • 字段值:{{ ($json.mathScore + $json.englishScore) / 2 }}

Set 节点会自动执行计算,得出平均分。

技巧三:条件判断和分级

场景:根据成绩给学生分等级(90 以上优秀、80-89 良好、80 以下及格)。

配置方法:

  • 字段名:grade
  • 字段值:{{ $json.averageScore >= 90 ? '优秀' : $json.averageScore >= 80 ? '良好' : '及格' }}

这使用了 JavaScript 的三元运算符,实现条件分支。

技巧四:添加时间戳

场景:记录每条数据处理的时间,便于审计和日志。

配置方法:

  • 字段名:processedAt
  • 字段值:{{ $now.toISOString() }}

$now是 n8n 的内置函数,返回当前时间的 ISO 格式字符串。

技巧五:重命名和清理数据

场景:后端 API 返回的字段名称不规范(例如usr_eml代表用户邮箱),需要转换为可读的名称。

配置方法:

  • 字段名:email
  • 字段值:{{ $json.usr_eml }}

然后启用Keep Only Set Fields,这样输出中就只有规范化的字段名了。

完整可执行工作流案例

下面是一个完整的、可直接在 n8n 中运行的工作流,演示了 Set 节点的多个实际应用。这个工作流模拟处理学生成绩数据:

{"name":"学生数据转换工作流-Set节点教程","nodes":[{"parameters":{},"id":"trigger","name":"Manual Trigger","type":"n8n-nodes-base.manualTrigger","typeVersion":1,"position":[50,100]},{"parameters":{"mode":"manual","fields":[{"name":"firstName","value":"张三","type":"string"},{"name":"lastName","value":"李四","type":"string"},{"name":"mathScore","value":85,"type":"number"},{"name":"englishScore","value":92,"type":"number"},{"name":"status","value":"active","type":"string"}]},"id":"step1","name":"Set - 原始数据","type":"n8n-nodes-base.set","typeVersion":1,"position":[250,100],"credentials":{}},{"parameters":{"mode":"manual","fields":[{"name":"fullName","value":"{{ $json.firstName }} {{ $json.lastName }}","type":"string"},{"name":"averageScore","value":"{{ ($json.mathScore + $json.englishScore) / 2 }}","type":"number"},{"name":"grade","value":"{{ $json.averageScore >= 90 ? '优秀' : $json.averageScore >= 80 ? '良好' : '及格' }}","type":"string"},{"name":"timestamp","value":"{{ $now.toISOString() }}","type":"string"}]},"id":"step2","name":"Set - 数据转换","type":"n8n-nodes-base.set","typeVersion":1,"position":[450,100],"credentials":{}}],"connections":{"trigger":{"main":[[{"node":"step1","type":"main","index":0}]]},"step1":{"main":[[{"node":"step2","type":"main","index":0}]]}}}

如何使用这个工作流:

  1. 复制上面的 JSON 代码(从{开始到最后的})
  2. 打开 n8n 工作区,创建一个新工作流
  3. 导入工作流:在 n8n 中找到"导入"选项,粘贴上面的 JSON 代码
  4. 执行工作流:点击"执行工作流"或按下相应按钮
  5. 查看结果:在最后一个 Set 节点(“Set - 数据转换”)中可以看到转换后的完整数据

这个工作流演示的功能:

功能说明输出结果
字段合并合并 firstName 和 lastNamefullName: “张三 李四”
数值计算计算两科成绩的平均分averageScore: 88.5
条件判断根据平均分分等级grade: “良好”
时间戳添加处理时间timestamp: “2025-12-01T14:28:00Z”

初学者常见问题解答

Q: Set 节点和 Function 节点有什么区别?

A: Set 节点用于简单的数据转换(添加、修改、删除字段),而 Function 节点允许你编写完整的 JavaScript 代码处理更复杂的逻辑。对于大多数场景,Set 节点已经足够了。

Q: 如何访问前一个节点的嵌套数据?

A: 使用点表示法。例如,如果前一个节点返回{ address: { city: '北京' } },你可以用{{ $json.address.city }}来访问城市名称。

Q: 我的表达式总是出错,怎么办?

A: 确保:

  • 使用{{ }}包围表达式
  • 字符串用单引号或双引号包围
  • 检查字段名称拼写是否正确(区分大小写)
  • 使用"Execute Step"测试节点,查看错误提示

Q: 如何在 Set 节点中处理数组数据?

A: 可以直接在 JSON 模式中创建数组。例如:[ {{ $json.item1 }}, {{ $json.item2 }} ]。对于复杂的数组处理,可能需要配合使用 Item Lists 或 Function 节点。

总结

Set 节点的核心价值:

✅简单易用:图形化界面让初学者快速上手

✅功能强大:支持表达式、计算、条件判断

✅数据安全:灵活的选项确保你不会意外丢失数据

✅工作流中枢:几乎每个复杂工作流都会用到 Set 节点

掌握 Set 节点后,你就能够:

  • 清理和格式化来自任何数据源的数据
  • 为下游节点(如数据库、API、邮件)准备正确格式的数据
  • 添加业务逻辑,如计算、分类、标记等
  • 构建更复杂的自动化工作流

  • 官方文档
  • n8n系列教程
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 6:36:26

解决AI“健忘“问题:Mem0长期记忆系统架构全解析,值得收藏!

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/29 6:35:50

AI编程插件怎么选?从Codex到Qoder的实践对比

1. 为什么我最后选了Qoder:先聊聊AI编程插件的选型1.1 Codex、Qoder和老牌AI插件到底差在哪如果你最近刷技术社区,应该能看到不少人拿Qoder和Codex放在一起比。我个人的理解是:Codex更像是OpenAI官方出品的一个独立Agent环境,它对…

作者头像 李华