微信扫码
添加专属顾问
我要投稿
n8n动态表达式全攻略:从新手到高手的20+实用技巧,帮你轻松搞定复杂数据提取! 核心内容: 1. 新手必备的5个基础表达式,解决80%常见问题 2. 进阶文字处理技巧,让数据清洗效率翻倍 3. 实战踩坑经验分享,避免常见错误和陷阱
你是否有面对n8n的数据流抓狂的经历。明明数据就在那里,却怎么也提取不出来。
嵌套了三层的JSON数据像迷宫,你试了十几个节点还是无法取出那个该死的字段。更崩溃的是,老板明早8点要看报表。这种无力感,像极了明明有一把钥匙,却怎么也打不开眼前的锁。
别被"表达式"这三个字吓到。其实它就像游戏里的快捷键,学会了能让你事半功倍。
{{$json.字段名}}
小白理解:就像从包裹里拿东西,$json是包裹,字段名是你要的物品。
实际场景:
{{$json.username}}
{{$json.email}}
{{$json.orderId}}
踩坑警告:字段名必须一模一样!username
和userName
是两个完全不同的东西。我曾因为一个大写字母debug了半小时...
{{'文字' + $json.字段}}
现实用途:给用户发个性化消息
直接上例子:
{{'你好,' + $json.name + '同学'}}
// 结果:你好,小明同学
进阶玩法:用反引号更简洁
{{`你好,${$json.name}同学`}}
// 效果一样,但更优雅
使用场景:算价格、算折扣、算提成
实用示例:
{{$json.price * 0.8}}
{{$json.price + 10}}
{{$json.sales * 0.1}}
{{$json.字段 || '默认值'}}
痛点解决:防止数据缺失导致流程崩溃
救命示例:
{{$json.nickname || '匿名用户'}}
// 如果没有昵称,就显示"匿名用户"
专家提示:这个小技巧能让你的工作流稳定性提升90%。养成习惯,你会感谢自己的。
{{$itemIndex}}
应用场景:批量处理时显示进度
实战案例:
{{'正在处理第' + ($itemIndex + 1) + '个订单'}}
// 注意要+1,因为序号从0开始
掌握了基础,现在来点能让同事惊呼"卧槽"的技巧。
1. 转大小写
{{$json.code.toUpperCase()}} // 转大写:abc → ABC
{{$json.code.toLowerCase()}} // 转小写:ABC → abc
使用场景:处理验证码、统一格式
2. 去空格
{{$json.input.trim()}}
// " 你好 " → "你好"
使用场景:清理用户输入,避免因为空格导致匹配失败
3. 替换内容
{{$json.content.replace('旧词', '新词')}}
// 把文章中的"旧词"全部换成"新词"
使用场景:批量修改文案、屏蔽敏感词
4. 数组长度
{{$json.items.length}}
// 获取列表有多少项
使用场景:统计订单商品数、计算参与人数
5. 数组转文字
{{$json.tags.join('、')}}
// ['游戏', '动漫', '科技'] → "游戏、动漫、科技"
使用场景:显示用户标签、生成关键词
6. 检查包含
{{$json.hobbies.includes('游戏')}}
// 返回 true 或 false
使用场景:判断用户兴趣、筛选目标人群
7. 三元运算(简化版if)
{{$json.age >= 18 ? '成年' : '未成年'}}
翻译成人话:如果年龄>=18,显示"成年",否则显示"未成年"
更复杂的例子:
{{$json.score >= 90 ? '优秀' : $json.score >= 60 ? '及格' : '不及格'}}
这一行代码,替代了3个IF节点!
这部分内容,是区分小白和高手的分水岭。但别怕,我会用最简单的方式讲清楚。
1. 获取当前时间
{{$now}} // 当前时间
{{$now.toFormat('yyyy-MM-dd')}} // 格式化:2024-03-15
{{$now.toFormat('HH:mm:ss')}} // 格式化:14:30:00
2. 时间计算
{{$now.plus({days: 7})}} // 7天后
{{$now.minus({hours: 2})}} // 2小时前
实战案例:自动设置过期时间
{{$now.plus({days: 30}).toFormat('yyyy-MM-dd')}}
// 30天后的日期,用于设置会员到期时间
3. 安全访问深层数据
{{$json.user?.profile?.avatar}}
解释:即使user或profile不存在也不会报错,这个?.
太救命了!
4. 复杂查询(JMESPath)
{{$jmespath($json, 'users[0].name')}}
// 获取第一个用户的名字
适用场景:数据嵌套很深,普通方法搞不定时
5. 复杂逻辑处理
{{(() => {
const price = $json.price;
const vip = $json.isVip;
if (vip && price > 100) {
return price * 0.7; // VIP且满100打7折
} else if (vip) {
return price * 0.9; // VIP打9折
} else {
return price; // 原价
}
})()}}
每一个坑,都是真金白银换来的教训。
巨坑一:数据类型混乱
问题:明明是数字10,加5变成了"105"
// 错误
{{$json.count + 5}} // "10" + 5 = "105"
// 正确
{{Number($json.count) + 5}} // 10 + 5 = 15
巨坑二:空值炸弹
问题:某个字段为空,整个流程崩溃
// 危险写法
{{$json.user.name}}
// 安全写法
{{$json.user?.name || '匿名'}}
巨坑三:性能黑洞
问题:处理大量数据时卡死
// 表达式处理1000条数据会很慢
// 解决:大数据请用Code节点,不要硬上表达式
{{'ORDER' + Date.now()}}
{{$json.phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')}}
{{Math.round((1 - $json.salePrice / $json.originalPrice) * 100) + '%'}}
{{$json.text.length > 20 ? $json.text.slice(0, 20) + '...' : $json.text}}
{{$json.keywords.split(',').map(k => '#' + k.trim()).join(' ')}}
现在,你已经掌握了n8n表达式的核心技能。那些曾经需要拖拽10个节点才能实现的功能,现在一个表达式就搞定。
但更重要的是,你获得了一种全新的思维方式——不再是工具的奴隶,而是数据的主人。
下一步:
记住:高手和小白的区别,往往就是一个表达式的距离。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-08-29
AI提示词的四种学习姿势:让你的AI像朋友一样懂你
2025-08-25
如何让模型直接输出 JSON 格式的数据?
2025-08-24
Dify全链路实战:AI 应用开发中 Prompt 与 Context 协同及 Dify 落地技巧
2025-08-20
多轮对话总 “失忆”?5 个技巧让 AI 记住你的每句话
2025-08-20
使用 GPT-5 进行编程的六个技巧
2025-08-19
会提问的人,都在用这5个万能提示词结构,悄悄变大神
2025-08-19
7 个提示词公式,让 AI 从「答非所问」变「精准执行」|附可复制模板
2025-08-18
Dify实现爆款BiliBili视频技巧分析
2025-06-18
2025-06-02
2025-06-23
2025-06-07
2025-07-15
2025-07-08
2025-06-11
2025-06-17
2025-07-06
2025-06-08
2025-08-25
2025-06-17
2025-04-21
2025-03-31
2025-03-29
2025-03-17
2025-02-06
2025-01-10