n8n 資料轉換技巧:JSON 處理與節點間傳遞(附範例)
搞懂 n8n 資料流怎麼運作,學會用 Edit Fields、Merge、Split Out、Code 節點做資料轉換,附實戰範例直接照做。
n8n 裡面的資料就是 JSON,節點之間傳來傳去的也是 JSON。搞懂資料怎麼流動、怎麼轉換,你的 workflow 就能處理各種奇怪的 API 回傳格式。
這篇用實際範例帶你學會最常用的資料轉換技巧。
n8n 資料流概念
在 n8n 裡面,每個節點處理完資料後,會把結果傳給下一個節點。這個資料的格式是固定的:一個陣列,裡面裝著一個或多個 item(物件)。
白話版:想像一條輸送帶,上面放著一個個箱子(item),每個箱子裡面裝的東西就是 JSON 資料。
[
{
"json": {
"name": "小明",
"email": "[email protected]"
}
},
{
"json": {
"name": "小華",
"email": "[email protected]"
}
}
]
每個 item 都有一個 json 屬性,你的資料就放在裡面。這就是為什麼取值要用 $json.name——因為資料在 json 這一層。
JSON 結構白話解釋
如果你不熟 JSON,用 30 秒搞懂:
{}大括號 = 一個物件(像一張表格的一列)[]中括號 = 一個陣列(像一堆東西排成一列)"key": "value"= 一個欄位和它的值- 巢狀 = 物件裡面還有物件
{
"order": {
"id": 123,
"items": [
{ "name": "商品A", "price": 100 },
{ "name": "商品B", "price": 200 }
],
"customer": {
"name": "小明",
"email": "[email protected]"
}
}
}
要取「小明」:$json.order.customer.name
要取「商品B 的價格」:$json.order.items[1].price
Edit Fields 節點(改名、新增、刪除欄位)
Edit Fields(舊名叫 Set)是最常用的資料轉換節點,用來:
- 把欄位改名
- 新增計算欄位
- 只保留需要的欄位(刪掉其他的)
- 改變資料結構
使用方式 1:Manual Mapping
點「Add Field」,一個一個加你要的欄位:
| 設定 | 說明 |
|---|---|
| Field Name | 新欄位名稱 |
| Field Value | 值,可以用 Expression 從前面抓 |
| Type | String / Number / Boolean / Object 等 |
勾選「Only Keep Fields I Specify」→ 只保留你加的欄位,其他全部丟掉。這在清理 API 回傳的一堆垃圾欄位時超好用。
使用方式 2:JSON Output
直接寫 JSON,n8n 會把它合併到資料裡:
{
"fullName": "{{ $json.firstName }} {{ $json.lastName }}",
"isVIP": true,
"processedAt": "{{ $now.toISO() }}"
}
實戰範例:整理 API 回傳
API 回傳了一堆你不需要的欄位:
{
"data": {
"user_id": "u123",
"user_name": "小明",
"user_email": "[email protected]",
"created_at": "2026-01-01",
"updated_at": "2026-03-20",
"role": "admin",
"last_login": "2026-03-25",
"preferences": { ... }
}
}
你只要 name 和 email,用 Edit Fields:
| Field Name | Value |
|---|---|
| name | {{ $json.data.user_name }} |
{{ $json.data.user_email }} |
勾選「Only Keep Fields I Specify」,輸出乾淨到不行:
{ "name": "小明", "email": "[email protected]" }
不囉唆,直接看怎麼用。
Merge 節點(合併多筆資料)
當你有兩條資料流要合在一起的時候,用 Merge 節點。
三種主要模式
| 模式 | 白話說明 | 用途 |
|---|---|---|
| Append | 兩邊的資料全部排在一起 | 合併兩個來源的資料清單 |
| Combine > Merge by Fields | 按某個欄位配對合併(像 Excel 的 VLOOKUP) | 訂單 + 客戶資料 |
| Combine > Merge by Position | 按順序一對一合併 | 兩邊資料數量一樣的時候 |
實戰範例:訂單 + 客戶資料合併
Input 1(訂單):
[
{ "orderId": 1, "customerId": "c01", "amount": 500 },
{ "orderId": 2, "customerId": "c02", "amount": 300 }
]
Input 2(客戶):
[
{ "id": "c01", "name": "小明", "email": "[email protected]" },
{ "id": "c02", "name": "小華", "email": "[email protected]" }
]
用 Merge by Fields,設定 Input 1 的 customerId 對應 Input 2 的 id,輸出:
[
{ "orderId": 1, "customerId": "c01", "amount": 500, "name": "小明", "email": "[email protected]" },
{ "orderId": 2, "customerId": "c02", "amount": 300, "name": "小華", "email": "[email protected]" }
]
Split Out 和 Aggregate
Split Out(拆開)
一個 item 裡面有陣列?用 Split Out 把陣列裡的每個元素拆成獨立的 item。
輸入:
{
"orderId": 1,
"items": ["商品A", "商品B", "商品C"]
}
Split Out → Field to Split: items
輸出(3 個 item):
[
{ "items": "商品A", "orderId": 1 },
{ "items": "商品B", "orderId": 1 },
{ "items": "商品C", "orderId": 1 }
]
Aggregate(聚合)
反過來,把多個 item 合成一個。常見用法:
- 把所有 item 的某個欄位收集成一個陣列
- 算總和、平均值
Code 節點(簡單 JS)
以上節點都搞不定的時候,用 Code 節點寫 JavaScript。
基本用法
// 取得所有輸入的 item
const items = $input.all();
// 處理每個 item
return items.map(item => {
return {
json: {
name: item.json.firstName + ' ' + item.json.lastName,
total: item.json.price * item.json.quantity,
isExpensive: item.json.price > 1000
}
};
});
常見用途
| 需求 | Code 節點寫法 |
|---|---|
| 過濾資料 | return items.filter(i => i.json.status === 'active') |
| 排序 | return items.sort((a, b) => b.json.score - a.json.score) |
| 去重 | 用 Set 或 reduce 去除重複項目 |
| 複雜計算 | 寫完整的 JS 邏輯 |
先跑起來再說。Code 節點很強大,但能用內建節點(Edit Fields、IF、Merge)解決的就用內建節點,比較好維護。
實戰範例:API 資料清洗 Pipeline
假設你要每天從某 API 抓資料、清洗、寫入 Google Sheet:
Workflow 結構:
- Schedule Trigger — 每天早上 9 點執行
- HTTP Request — 打 API 拿原始資料
- Split Out — 把回傳的陣列拆成多個 item
- Edit Fields — 只保留需要的欄位、改名
- IF — 過濾掉狀態不對的資料
- Google Sheets — 寫入試算表
每一步都很單純,串在一起就完成了自動化資料清洗。
延伸閱讀
- n8n Expression 語法速查表 — Expression 取值的各種寫法
- n8n 第一個自動化工作流 — 從零開始做一個 workflow
- n8n Sub-workflow 教學 — 工作流模組化設計
- n8n Expression 與進階技巧大全 — 進階技巧總整理
外部參考:
這篇提到的節點組合,我們有做好模板,下載回去直接改就能用。
免費下載資料轉換模板 >> n8nstart.cc/templates
FAQ
Edit Fields 節點和 Code 節點差在哪?
Edit Fields 用圖形介面操作,適合簡單的改名、新增欄位。Code 節點用 JavaScript,適合複雜的邏輯處理。能用 Edit Fields 就用 Edit Fields,比較好維護。
Merge 節點只能合併兩個輸入嗎?
對,Merge 節點只接受兩個輸入。如果要合併三個以上的來源,串聯多個 Merge 節點就好。
n8n 可以處理很大的 JSON 嗎?
可以,但要注意記憶體。如果你的 JSON 有幾萬筆資料,建議分批處理(用 Loop Over Items 節點),不要一次全部載入。