「順調にワークフローを作っていたのに、突然の赤いエラー画面。『JSON Parse Error』って何!?」
n8nを使っていると、必ず一度はこの壁にぶつかります。特にAPI連携やOpenAI(ChatGPT)からの出力を処理しようとした時に頻発するこのエラー。見慣れない英語のメッセージに焦る必要はありません。
これは、n8nが「渡されたデータが、約束通りの形式(JSON)になっていないから読めないよ!」と教えてくれているだけです。
この記事では、n8nで発生するJSONエラーの正体を解き明かし、非エンジニアでもコピペで直せる具体的な解決策を3つのパターンに分けて解説します。
【結論】エラー原因の9割は「余計な文字」か「カッコの閉じ忘れ」
結論から言うと、JSONパースエラーのほとんどは、データの中に本来あってはならない文字(ゴミ)が混ざっているか、カッコ { } や引用符 " " の不整合が原因です。
特に最近多いのが、AI(ChatGPT等)が親切心で付け加えた「“`json」というマークダウン記法が原因でエラーになるケースです。これを削除(クリーニング)するだけで、嘘のように動きます。
そもそも「JSONパース」とは?イメージで理解する
技術的な話に入る前に、イメージを共有しましょう。
- JSON(ジェイソン): データを運ぶための「専用の段ボール箱」。荷物の詰め方に厳密なルールがあります。
- Parse(パース): 届いた段ボール箱を開けて、中身を取り出し、使える状態にすること(荷解き)。
- JSON Parse Error: 「段ボールが潰れている」あるいは「詰め方のルールが守られていない」ため、n8nが箱を開けられずに困っている状態です。
n8nは「箱が開かないと次の作業ができない」ため、そこでワークフローを緊急停止させます。これがエラーの正体です。
【完全ガイド】パターン別!エラー解決ステップ
Pattern A: AIの出力に「“`json … “`」が含まれている場合
OpenAIなどのLLMノードを使った後に最も多いエラーです。AIはコードを見やすくするために、JSONの前後にマークダウンの装飾をつけてしまいます。
解決策: Codeノードで「お掃除」する
AIノードの直後に Code ノードを追加し、以下のJavaScriptコードをコピペしてください。これは、JSONの前後にこびりついた装飾を強制的に削除する強力なクリーナーです。
// 前のノードからの出力を取得
const inputContent = items[0].json.content;
// ```json や ``` というマークダウン記法を削除する正規表現
const cleanJson = inputContent.replace(/^```json\s*/, "").replace(/^```\s*/, "").replace(/\s*```$/, "");
// キレイになったテキストをJSONとしてパース(変換)して出力
return [{
json: JSON.parse(cleanJson)
}];
※ items[0].json.content の部分は、実際にあなたのAIノードが出力しているプロパティ名(例: text や output 等)に合わせて書き換えてください。
Pattern B: ダブルクォート " のミス
JSONのルールでは、キー(名前)と値(中身)は必ずダブルクォート " で囲む必要があります。シングルクォート ' ではエラーになります。
- ❌ 悪い例:
{ 'name': 'Taro' }(シングルクォートはダメ) - ⭕ 良い例:
{ "name": "Taro" }
また、文章の中にダブルクォートが含まれている場合(例: "彼は "Hello" と言った")、外側の引用符と区別がつかなくなります。この場合は、バックスラッシュ \ を使って「エスケープ処理」をする必要があります(例: "彼は \"Hello\" と言った")。
Pattern C: APIから「文字列(String)」として届いている
APIによっては、中身はJSONの形をしているのに、n8nがそれを「ただの長い文字列」として認識してしまうことがあります。
プレビュー画面でデータを見た時、データの構造がツリー状に展開できず、ベタ打ちのテキストに見える場合はこれです。
解決策: 「Edit Fields」ノードでパースする
以前の JSON Parse ノードの機能は、現在 Edit Fields (Set) ノードなどに統合されています。
- Edit Fields ノードを追加します。
- 変換したいフィールドを選び、値の設定で「Expression(式)」モードにします。
{{ JSON.parse($json.your_field_name) }}のように記述します。
これで、文字列扱いされていたデータが、n8nが扱える「オブジェクト(構造化データ)」に生まれ変わります。
[関連テクニック] エラーを未然に防ぐ「検証」ツール
「どこが間違っているのか目で見てわからない!」という場合は、人間の目で探すのを諦めて、無料の検証ツールを使いましょう。
- JSONLint (jsonlint.com): エラーが出ているJSONテキストをコピーして貼り付けるだけで、「何行目のどこがおかしいか」をピンポイントで指摘し、正しい形に整形してくれます。
よくある質問 (Q&A)
Q1. エラーメッセージ「Unexpected token < in JSON at position 0」とは?
これは「JSONが来ると思ったら、HTMLが返ってきた」という典型的エラーです。
APIのURLが間違っていて「404 Not Found」ページ(HTML)が返ってきているか、サーバーエラー画面が返ってきている可能性が高いです。JSONの中身ではなく、接続先の設定や認証キーを見直してください。
Q2. 最後の項目にカンマ , があるとエラーになりますか?
はい、厳密なJSONルールでは、リストの最後の項目の後にカンマをつけてはいけません(Trailing Commaの禁止)。
{ "a": 1, "b": 2, } ← 最後のカンマを削除してください。
Q3. n8nのAIノードに「Structured Output」機能はありますか?
はい、最新のOpenAI Chat Modelノードなどには、出力を強制的にJSONにする機能(Response Format: JSON Object)があります。これを使うと、Pattern Aのようなマークダウン混入エラーをAPI側で防げるため、非常に推奨されます。
まとめ
JSONパースエラーは、データの「梱包トラブル」です。
- AIの出力なら、Codeノードで
```jsonを削除する。 - 構文エラーなら、JSONLint で場所を特定する。
- 文字列扱いなら、
JSON.parse()で展開する。
この3つの対処法を知っていれば、もう赤いエラー画面も怖くありません。エラーが出たら「お、クリーニングのチャンスだな」と思って対処しましょう!
参考文献・リンク
- (https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/)" target="_blank">n8n Code Node DocumentationCode node documentation | n8n DocsDocumentation for the Code node in n8n, a workflow automation platform. Includes guidance on usage, and links to example...
- (https://jsonlint.com/)" target="_blank">JSONLint – The JSON ValidatorJSON Online Validator and Formatter - JSON LintJSONLint is the free online validator, json formatter, and json beautifier tool for JSON, a lightweight data-interchange...
- (https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)" target="_blank">MDN Web Docs – JSON.parse()JSON.parse() - JavaScript | MDNJSON.parse() 静的メソッドは、文字列を JSON として解析し、文字列によって記述されている JavaScript の値やオブジェクトを構築します。オプションのリバイバー関数で、生成されたオブジェクトが返される前に変換を実行する...


コメント