iPaaSツール「n8n」を使って業務自動化のワークフローを作成していると、必ずと言っていいほど直面するのが「データの指定」という壁です。
特にAPI連携で取得したデータは、多くの場合「JSON」という形式でやり取りされます。
「取得したデータの中から、この部分だけを使いたいのに…」
「特定の条件に合う情報だけを抜き出して、次のアクションにつなげたい…」
そんな悩みを解決してくれるのが、今回ご紹介する「JSONPath(ジェイソンパス)」です。
この記事では、2026年1月時点の情報として、n8nを使いこなす上で必須の知識であるJSONPathの基礎から、コピペで使える便利なパターンまで、初心者にも分かりやすく解説します。
この記事を読み終える頃には、あなたはn8n上でデータを自由自在に操れるようになっているはずです。
JSONPathとは?n8nのデータ操作でなぜ重要なのか
まず、JSONPathを理解する前に、その対象となる「JSON」について簡単におさらいしましょう。JSON(JavaScript Object Notation)は、データをやり取りする際に広く使われるテキストベースのデータ形式です。「キー」と「値」のペアで構成され、人間にもコンピュータにも読みやすいのが特徴です。
例えば、以下のような顧客データがあったとします。
{ "customer": { "name": "山田 太郎", "age": 30, "isVip": true, "orders": [ { "orderId": "A001", "amount": 5000 }, { "orderId": "A002", "amount": 8000 } ] } }
このデータの中から「顧客名」や「2番目の注文金額」だけを取り出したい、といった場合に活躍するのがJSONPathです。JSONPathとは、一言で言えば「JSONデータ内における、目的のデータまでの住所を示すパス(道筋)」のようなものです。ファイルを探すときに「CドライブのUsersフォルダの中のDocumentsフォルダ」と指定するのに似ていますね。
n8nのワークフローでは、ノードからノードへとデータがJSON形式で受け渡されていきます。例えば、「HTTP Requestノード」で外部APIから商品リストを取得し、その中から価格が1,000円以上の商品だけを「Google Sheetsノード」でスプレッドシートに書き出す、といった処理を考えます。このとき、「価格が1,000円以上の商品データ」を正確に指定するためにJSONPathが不可欠となるのです。n8nのExpression Editor(式エディタ)を使えば、このJSONPathを記述して、動的にデータを参照・加工できます。つまり、JSONPathを制する者は、n8nのデータ操作を制すると言っても過言ではありません。
これだけは覚えたい!JSONPathの基本構文
JSONPathにはいくつかのお作法(構文)がありますが、ここでは特にn8nで頻繁に使う基本的なものを4つご紹介します。これらを組み合わせるだけで、多くのデータ抽出が可能になります。
ルート要素と子要素の指定($ と .)
JSONPathの式は、必ずルート(一番上の階層)を表す$から始まります。そして、階層を1つ下がるごとに.(ドット)を使ってキー名を繋げていきます。
- JSONPath式:
$.customer.name - 取得結果: “山田 太郎”
これは、「一番上の階層($)にあるcustomerオブジェクトの中の、nameキーの値」という意味になります。非常に直感的ですね。
配列(リスト)の要素指定([])
JSONデータの中には、[]で囲まれた「配列(リスト)」構造がよく登場します。先ほどの例ではordersがそれにあたります。配列内の特定の要素にアクセスするには、[インデックス番号]を使います。注意点として、インデックス番号は0から始まります。
- JSONPath式:
$.customer.orders[0] - 取得結果:
{ "orderId": "A001", "amount": 5000 }(1番目の注文データ全体)
さらに、その中の特定のキーを指定することも可能です。
- JSONPath式:
$.customer.orders[1].amount - 取得結果: 8000 (2番目の注文の金額)
ワイルドカードですべての要素を取得(*)
オブジェクトのキー名や配列のインデックス番号が何であれ、その階層のすべての要素を取得したい場合には*(アスタリスク)を使います。これは、複数の項目をまとめて処理したい場合に非常に便利です。
- JSONPath式:
$.customer.orders[*].amount - 取得結果:
[5000, 8000](すべての注文の金額を配列として取得)
深い階層を検索する再帰的な指定(..)
データの階層が複雑で、どこにあるかわからない特定のキーを探したい場合に便利なのが..(ダブルドット)です。これは「現在の階層以下にあるすべての要素」を対象に検索をかけます。
- JSONPath式:
$..orderId - 取得結果:
["A001", "A002"](JSONデータ全体からorderIdキーを持つ値をすべて探し出す)
ただし、..は意図しないデータまで取得してしまう可能性もあるため、データ構造が明確な場合は.で正確に指定する方が安全です。
実践!n8nでよく使うJSONPathの式パターン
基本構文を理解したところで、次はn8nのワークフローで即戦力となる、より実践的なJSONPathのパターンを見ていきましょう。特に「フィルタ式」は非常に強力で、使いこなせるとワークフローの汎用性が格段に上がります。
特定の条件に一致する要素を抽出する(フィルタ式 [?()])
JSONPathの真骨頂ともいえるのが、このフィルタ機能です。配列の中から、特定の条件を満たす要素だけを絞り込むことができます。式は[?(@.キー名 演算子 値)]のように記述します。
例1: 注文金額が6000円より大きい注文データのみを取得する
- JSONPath式:
$.customer.orders[?(@.amount > 6000)] - 取得結果:
[{ "orderId": "A002", "amount": 8000 }]
@は配列内の現在の要素を表します。つまり「orders配列の各要素の中で、amountが6000より大きいもの」を抽出しています。
例2: VIP顧客(isVipがtrue)であるかどうかを判定する
フィルタは特定のオブジェクトの存在確認にも使えます。以下の例では、条件に合う要素があればそのデータが、なければ空の配列が返ります。これを利用して、n8nのIFノードで処理を分岐させることができます。
- JSONPath式:
$[?(@.customer.isVip == true)] - 取得結果: isVipがtrueならデータ全体が、falseなら空が返る
配列の最初の要素や最後の要素を取得する
n8nでは、ループ処理(Loop Over Itemsノード)の最後や、時系列データの最新版だけを使いたい、といった場面がよくあります。そのような場合にインデックス指定が役立ちます。
- 最初の要素:
$.customer.orders[0] - 最後の要素:
$.customer.orders[-1](最後の要素は-1で指定できます)
複数の特定の要素を一度に取得する(ユニオン [,])
1つのオブジェクトから、複数のキーの値を同時に取り出したい場合は[,]を使います。
例: 顧客の名前とVIPステータスを同時に取得
- JSONPath式:
$.customer['name', 'isVip'] - 取得結果: “山田 太郎”とtrueを含む配列(n8nの挙動に依存する場合があります)
この構文はn8nのバージョンや実装によって挙動が異なる場合があるため、Expression Editorでプレビューしながら試すのが確実です。
JSONPathを使いこなすためのヒントと注意点(独自の視点)
最後に、私がn8nで数多くのワークフローを構築してきた経験から、JSONPathをよりうまく、そして安全に使いこなすためのヒントをいくつか共有します。
n8nのExpression Editorで効率的に試す
n8nの最大の利点の一つが、Expression Editor内でリアルタイムにJSONPathの結果をプレビューできることです。前のノードを実行して入力データ(Input Data)が確定している状態であれば、エディタに式を打ち込むたびに、右側のプレビュー欄(Output)に結果が即座に表示されます。複雑な式を組み立てる際は、いきなり完成形を目指すのではなく、$から始めて.で少しずつ階層を掘り下げ、プレビューで確認しながら進めるのが最も確実で速い方法です。
データ構造が変わったときのエラー対処法
APIの仕様変更などで、参照しようとしたキーが存在しない場合、ワークフローはエラーで停止してしまいます。これを避けるには、いくつかの対策があります。
- ノード設定の「Continue on Fail」を有効にする: ノードの設定画面(Settingsタブ)にある「Continue on Fail」をオンにしておけば、そのノードでエラーが発生してもワークフロー全体が止まるのを防げます。
- IFノードで存在確認をする: データを本格的に利用する前に、IFノードで
{{ $json.key } !== undefinedのような条件式を使って、キーが存在するかどうかをチェックする一手間が、安定したワークフロー運用につながります。
外部ツールで事前に式をテストする
非常に複雑なJSONデータや、まだn8nのワークフローに組み込んでいないAPIのレスポンスを元にJSONPathを考えたい場合もあるでしょう。そんなときは、「JSONPath Online Evaluator」のようなWebツールが便利です。JSONデータを貼り付けて、様々なJSONPath式を試せるので、効率的に目的の式を見つけ出すことができます。そこで完成した式をn8nに持ち込む、という手順も有効です。
JSONPathがうまく機能しないときは、まず「そもそもデータが正しくノードに渡ってきているか」「JSONの形式が崩れていないか」を確認することも、問題解決の近道となります。
まとめ:JSONPathをマスターしてn8nの自動化を次のレベルへ
今回は、n8nでのデータ操作に不可欠なJSONPathについて、その基本から実践的な使い方までを解説しました。
最初は少しとっつきにくいかもしれませんが、以下のポイントを押さえるだけで、大半のデータ抽出は可能になります。
$と.で階層をたどる- 配列は
[0]のようにインデックスで指定する - 条件分岐には
[?(@.key == 'value')]というフィルタ式が超強力
JSONPathを使いこなせるようになると、これまで諦めていた複雑なデータの加工や、より柔軟な条件分岐が可能になり、あなたのn8nワークフローは格段に賢く、そして堅牢になります。
n8nの持つポテンシャルをさらに深く探求したい方は、その全体像や具体的な導入メリット、始め方を網羅的に解説した「n8n完全ガイド記事」もぜひご覧ください。あなたの自動化の旅を力強くサポートします。
そして、「この記事を読んで、n8nを本格的に始めてみたい!」と思った方は、ぜひこちらの公式サイトからサインアップしてみてください。クラウド版ならすぐに、無料で強力な自動化ワークフローを体験し始めることができます。
まずは簡単なデータ抽出から、JSONPathの世界に足を踏み入れてみましょう!