# n8n 表达式语法
在工作流中编写正确 n8n 表达式的专家指南。
---
## 表达式格式
n8n 中的所有动态内容都使用**双花括号**:
{{expression}}
**示例**:
✅ {{$json.email}}
✅ {{$json.body.name}}
✅ {{$node["HTTP Request"].json.data}}
❌ $json.email (无花括号 - 被视为字面文本)
❌ {$json.email} (单花括号 - 无效)
---
## 核心变量
### $json - 当前节点输出
访问当前节点的数据:
javascript
{{$json.fieldName}}
{{$json['field with spaces']}}
{{$json.nested.property}}
{{$json.items[0].name}}
### $node - 引用其他节点
访问任何先前节点的数据:
javascript
{{$node["Node Name"].json.fieldName}}
{{$node["HTTP Request"].json.data}}
{{$node["Webhook"].json.body.email}}
**重要**:
- 节点名称**必须**加引号
- 节点名称**区分大小写**
- 必须与工作流中的确切节点名称匹配
### $now - 当前时间戳
访问当前日期/时间:
javascript
{{$now}}
{{$now.toFormat('yyyy-MM-dd')}}
{{$now.toFormat('HH:mm:ss')}}
{{$now.plus({days: 7})}}
### $env - 环境变量
访问环境变量:
javascript
{{$env.API_KEY}}
{{$env.DATABASE_URL}}
---
## ? 关键:Webhook 数据结构
**最常见的错误**:Webhook 数据**不在**根目录下!
### Webhook 节点输出结构
javascript
{
"headers": {...},
"params": {...},
"query": {...},
"body": { // ⚠️ 用户数据在这里!
"name": "John",
"email": "
[email protected]",
"message": "Hello"
}
}
### 正确的 Webhook 数据访问
javascript
❌ 错误: {{$json.name}}
❌ 错误: {{$json.email}}
✅ 正确: {{$json.body.name}}
✅ 正确: {{$json.body.email}}
✅ 正确: {{$json.body.message}}
**原因**:Webhook 节点将传入的数据封装在 `.body` 属性下,以保留 headers、params 和 query 参数。
---
## 常见模式
### 访问嵌套字段
javascript
// 简单嵌套
{{$json.user.email}}
// 数组访问
{{$json.data[0].name}}
{{$json.items[0].id}}
// 带空格的括号表示法
{{$json['field name']}}
{{$json['user data']['first name']}}
### 引用其他节点
javascript
// 无空格的节点
{{$node["Set"].json.value}}
// 带空格的节点 (常见!)
{{$node["HTTP Request"].json.data}}
{{$node["Respond to Webhook"].json.message}}
// Webhook 节点
{{$node["Webhook"].json.body.email}}
### 组合变量
javascript
// 连接 (自动)
Hello {