初心者向け
n8n Split Outノードの使い方:入れ子の配列をコードなしで展開する
n8nのSplit Outノードで、1件のデータの中にある配列を複数件に展開する方法を解説します。配列インデックスを含むパスの書き方と、他のフィールドを残したときの挙動を実際に確認しました。
公開
動作確認: — n8n 2.36.8 / Split Out ノード v1 / Aggregate ノード v1
APIから返ってくるデータは、1件の中に配列が入っている形がよくあります。 これを「配列の要素ごとに1件」のデータに展開するのが Split Outノードです。
Codeノードの記事では、同じことを JavaScript のループで書きました。 Split Out を使えば、コードを書かずに同じ結果が得られます。
内容は n8n 2.36.8 / Split Out ノード v1 で実際に動かして確認しています。
Split Out は何をするものか
1件のデータの中にある配列を、複数件のデータに展開するノードです。
なぜこれが必要かというと、n8n のノードは「1件ずつ」処理するのが基本だからです。 配列が入れ子のままだと、後続のノードで1件ずつ扱えません。
展開してしまえば、IF で振り分けたり、Edit Fields で整えたりが素直にできます。
実際に展開してみる
気象庁のデータを例にします。この JSON は、地域ごとの情報が
timeSeries の中の areas という配列に入っています。
{
"office": "気象庁",
"reportedAt": "2026-09-24T17:00:00+09:00",
"timeSeries": [
{ "areas": [ { "name": "東京地方" }, { "name": "伊豆諸島北部" } ] }
]
}
手順
- Split Out ノードを追加する
- Fields To Split Out に展開したい配列のパスを書く
- Execute step を押す
パスの書き方が要点です。今回はこう書きます。
timeSeries[0].areas
配列のインデックス([0])を含むパスが使えます。 実行すると、
1件だったデータが2件になりました。
{ "name": "東京地方" }
{ "name": "伊豆諸島北部" }
Code ノードで書いていたループが、この指定1行で置き換わりました。
![Split Outノードの実行結果。左の入力は1件でoffice、reportedAt、timeSeriesの中にareas[0]とareas[1]が入れ子になっている。中央のFields To Split OutにtimeSeries[0].areas、IncludeにNo Other Fields。右の出力は2件でnameだけが残り、東京地方と伊豆諸島北部が表示されている](/media/n8n-split-out-node/result.webp)
この1枚に、この記事で伝えたいことが全部写っています。
入力1件が出力2件になり、同時に office と reportedAt が消えています。
パスの書き方
$json. は付けません。 フィールド名をそのまま書きます。
なお、$json.timeSeries[0].areas と書いても同じ結果になりました。
ただし公式の案内は「付けない」なので、素直に timeSeries[0].areas と書く方が安全です。
複数の配列を同時に展開したい場合は、設定欄の下にある + Add Field で欄を増やします。 (ノードの定義上はカンマ区切りでも指定できます)
既定では、他のフィールドが消える
Include という設定があり、**既定は No Other Fields(他のフィールドを含めない)**です。
上の実行結果を見ると、出力は { "name": "東京地方" } だけでした。
元のデータにあった office と reportedAt は消えています。
Edit FieldsやSwitchと同じパターンです。 n8n のノードは明示的に指定したものだけを通す設計になっています。
他のフィールドを残すと、構造が崩れる
では Include を All Other Fields にすれば解決かというと、
そう単純ではありませんでした。
実際に試した結果がこれです。
{
"office": "気象庁",
"reportedAt": "2026-09-24T17:00:00+09:00",
"timeSeries": [ {} ],
"timeSeries[0].areas": { "name": "東京地方" }
}
2つ、想定外のことが起きています。
timeSeriesが[{}]として残る —areasを抜き取った「抜け殻」がそのまま残っている- キー名が
timeSeries[0].areasになる — パスの文字列がそのままフィールド名になっている
このままだと、後続のノードで値を取り出すのが面倒になります。
出力先の名前を指定する
Options の + Add Field から Destination Field Name を追加すると、 展開した値を入れるフィールド名を指定できます。

area を指定して実行したところ、こうなりました。
{
"office": "気象庁",
"reportedAt": "2026-09-24T17:00:00+09:00",
"timeSeries": [ {} ],
"area": { "name": "東京地方" }
}
キー名が扱いやすくなりました。 抜け殻の timeSeries は残りますが、
不要なら後続の Edit Fields で外せます。
入れ子の配列を展開して、かつ他のフィールドも残したい場合は、 Destination Field Name を指定してください。 指定しないと、 パスがそのままキー名になります。
逆操作:Aggregate
Aggregate ノードは Split Out の逆で、複数件を1件の配列にまとめます。
「展開して1件ずつ処理し、最後にまとめて1回だけ通知する」という流れで使います。
- 個別のフィールドをまとめる — 指定したフィールドの値だけを配列にする
- 全データをまとめる — 各件のデータ全体を配列にする
こちらにも既定値の注意があります。値が欠けている件を配列に含めるかどうかの設定は 既定でオフなので、欠損がある場合は件数がずれます。
Code と Split Out の使い分け
同じことができる場面が多いので、基準を決めておくと迷いません。
Split Out が向いている
- 配列を展開するだけ
- キャンバスを見ただけで「ここで展開している」と分かってほしい場合
Code が向いている
- 展開しながら値を加工したい(条件で絞る、フィールドを計算する)
- 複数階層を同時に扱う
- 展開のルールが複雑
Codeノードの記事で書いたコードは、
展開しながら isRainy を計算していたので、あれは Code が適切な例でした。
単に展開するだけなら Split Out の方が読みやすくなります。
うまくいかないときの切り分け
- 何も出てこない — パスが合っているか。
$json.は不要 - 他のフィールドが消えた — Include が
No Other Fieldsのままではないか - キー名がパスになっている — Destination Field Name を指定する
- フィールド名に
.が含まれる — Options で Disable Dot Notation をオンにする - 配列が入れ子の最上位にある — 先に Edit Fields か Code で名前を付けた形にする
次に読む
- n8n Codeノードの使い方 — 展開しながら加工したいとき
- n8n Edit Fields(Set)ノードの使い方 — 展開後に項目を整える
- コアノードの一覧 — ほかのよく使うノード