生活や仕事に役立つライフハック、お得な情報を発信しています。⚠️記事内にPRを含みます

n8nでJSONデータを効率的に整形・変換するためのベストプラクティス

n8nでワークフローを組む際、API連携などでJSONデータの扱いに戸惑った経験はありませんか。

「取得したデータから特定の情報だけ抜き出したい」「複数のAPIから得たデータを組み合わせて使いたい」といった場面で、JSONの整形・変換は避けて通れない重要なスキルです。

しかし、複雑なデータ構造を前に、どう手をつければ良いか分からず時間がかかってしまうことも少なくありません。

この記事では、2025年10月時点の情報に基づき、n8nにおけるJSONデータの効率的な整形・変換テクニックを、基本的な方法から実践的なベストプラクティスまで分かりやすく解説します。

この記事を読めば、あなたのn8nワークフローはより高度で安定したものになり、業務自動化の可能性がさらに広がるはずです。

基本的なデータ抽出と整形 – Setノードの徹底活用

n8nでJSONデータを扱う第一歩は、Setノードを使いこなすことです。プログラミングの知識がなくても、直感的にデータの追加、変更、削除ができます。特に、APIから取得したデータの中から必要な部分だけを抽出する際に非常に役立ちます。

例えば、{"user": {"id": 123, "name": "山田太郎", "email": "yamada@example.com"}} というJSONデータから名前だけを取り出したい場合、Setノードの「Value」に {{ $json.user.name }} と入力するだけで、「山田太郎」という値を持つ新しいデータ項目を作成できます。これがドット記法と呼ばれる最も基本的なアクセス方法です。

ドット記法とブラケット記法の使い分け

ドット記法はシンプルで読みやすいですが、キーにハイフン(-)やスペースが含まれている場合はうまく機能しません。その場合はブラケット記法を使いましょう。例えば、キーが “user-name” の場合、{{ $json["user-name"] }} のように記述します。この2つの記法を場面に応じて使い分けることが、安定したワークフロー構築の第一歩です。

独自の視点:Setノードは「ワークフローの可読性」を高める

Setノードの真価は、単なるデータ操作だけではありません。後からワークフローを見返したときに「ここでどのデータをどのように加工しているか」が一目瞭然になる点です。複雑な処理をCodeノードに集約する前に、Setノードでデータの前処理を段階的に行うことで、処理の流れが可視化され、メンテナンス性が格段に向上します。チームでワークフローを共有する際にも、この可読性の高さは大きな武器となります。

複雑なデータ変換の鍵 – Codeノードを使いこなす

Setノードでは対応しきれない、より複雑なデータ変換にはCodeノードが必須です。CodeノードではJavaScriptを使って、配列の操作、条件分岐、ループ処理など、高度なロジックを自由に記述できます。これにより、データ変換の可能性は無限に広がります。

map()メソッドによる配列の変換

APIのレスポンスでよくあるのが、オブジェクトの配列です。例えば、複数のユーザー情報が配列で返された際に、全員のメールアドレスだけを抽出したいケースを考えます。Codeノードでmap()メソッドを使えば、これを一行で実現できます。

items[0].json.users.map(user => ({ email: user.email }));

このように書くだけで、元の配列から各ユーザーのemailだけを抜き出した新しい配列を生成できます。ループ処理を自分で書くよりも遥かに簡潔で、ミスも少なくなります。

filter()メソッドでの条件付きデータ抽出

配列の中から特定の条件に合うデータだけを絞り込みたい場合はfilter()メソッドが有効です。例えば、「ステータスが ‘active’ のユーザーだけを抽出する」といった処理は、以下のように記述します。

items[0].json.users.filter(user => user.status === 'active');

これにより、条件に合致するユーザーオブジェクトのみを含む新しい配列が得られ、後続の処理を効率化できます。

独自の視点:Codeノードは「小さな関数」の集まりと考える

Codeノードに長大なコードを書くと、デバッグが困難になりがちです。私のベストプラクティスは、Codeノードを「特定の仕事だけをする小さな関数」と捉えることです。例えば、「ユーザーリストから有効なユーザーだけを抽出するCodeノード」「抽出したユーザー情報を整形するCodeノード」のように、役割を明確に分離します。これにより、各ステップでのデータの入出力を確認しやすくなり、問題が発生した際の特定も容易になります。一つのCodeノードで全てを完結させようとせず、処理を分割する意識が重要です

実践的なテクニックと堅牢なワークフローのためのベストプラクティス

基本的な操作を覚えたら、次はより実践的で、エラーに強い「堅牢な」ワークフローを構築するためのテクニックを学びましょう。予期せぬデータ構造の変化や欠損に対応できるかどうかで、ワークフローの信頼性は大きく変わります。

エラーハンドリングとデフォルト値の設定

APIからのレスポンスでは、特定のキーが存在しない場合があります。例えば、{{ $json.user.profile.age }} のように深い階層のデータにアクセスしようとしたとき、profile キー自体が存在しないとワークフローはエラーで停止してしまいます。これを防ぐために、デフォルト値を設定する習慣をつけましょう。

n8nのExpression内では、|| 演算子を使うのが簡単です。

{{ $json.user.profile.age || 20 }}

このように書けば、age が存在しない場合にデフォルト値として `20` が設定され、エラーを回避できます。この「守りの姿勢」が、24時間365日安定して稼働するワークフローには不可欠です。

データ構造のプレビューとデバッグ

複雑なデータ変換を行う際、意図した通りのデータ構造になっているかを確認する作業は非常に重要です。n8nの便利な機能の一つに、各ノードの実行結果をピン留め(Pin)する機能があります。変換前と変換後のノード出力をピン留めして比較することで、どこでデータがおかしくなったかを視覚的に追跡できます。Codeノードでconsole.log()を使うのも有効ですが、まずはこのピン留め機能を活用して、データの流れを常に把握する癖をつけましょう。

独自の視点:JSON整形は「後工程への思いやり」

私がJSONを整形する際に常に意識しているのは、「このデータを次に受け取るノード(やシステム)が使いやすい形になっているか?」ということです。例えば、最終的にGoogleスプレッドシートに書き込むのであれば、ネストされたJSONはフラットな構造に変換しておくべきです。あるいは、別のAPIにデータを渡すのであれば、そのAPIが要求するキーの名前に正確に変換しておく必要があります。JSON整形は単なるデータ変換作業ではなく、ワークフロー全体の連携をスムーズにするための「後工程への思いやり」であると考えると、自然と最適なデータ構造が見えてくるはずです。

まとめ:JSONを制する者がn8nを制する

この記事では、n8nにおけるJSONデータの効率的な整形・変換方法を解説しました。

  • Setノードで基本的なデータ抽出を行い、ワークフローの可読性を高める。
  • Codeノードmap()filter()を使い、複雑な配列操作を簡潔に記述する。
  • デフォルト値の設定やピン留め機能の活用で、エラーに強くデバッグしやすい堅牢なワークフローを構築する。

これらのテクニックを習得することで、あなたはn8nをさらに深く、そして自由自在に使いこなせるようになります。API連携の可能性が広がり、これまで手作業で行っていた多くの業務を自動化できるでしょう。

さらにn8nの全体像を掴みたい、基本的な使い方から学びたいという方には、n8nの導入から応用までを網羅したn8n完全ガイド記事も用意しています。ぜひ合わせてご覧ください。

この記事を読んで、n8nの可能性にワクワクした方は、ぜひ実際に触ってみることをお勧めします。以下のリンクからn8nを始めれば、今日からあなたの業務自動化が新たなステージに進みます。