n8nでAPI連携をしていると、
・JSON parameter needs to be valid JSON
・Bad request
といったエラーにぶつかることがあります。
一見するとAPIの問題に見えますが、
実際はn8n側の設定ミスであることがほとんどです。
この記事では、JSONエラーが出る原因と対処法を、
実体験ベースでわかりやすく整理します。
よくあるJSONエラー
まずよく見るのがこれです。
JSON parameter needs to be valid JSON意味はシンプルで、「JSONとして正しい形式になっていない」ということです。
JSONエラーの原因
主な原因はこの4つです。
・シングルクォートを使っている
・末尾にカンマがある
・JSON形式になっていない
・Expressionの書き方ミス
ダメな例
{
'text': 'hello'
}シングルクォートはNG
{
"text": "hello",
}最後のカンマNG
{{ $json.text }}これはJSONではなく、ただの文字列(値)になっているため、そのままでは使えません。
正しい書き方
{
"text": "hello"
}JSONは「ダブルクォート+正しい構造」が必須です。
Using JSONでハマるポイント
n8n特有の罠です。
ダメな例
{{ $json.post_text }}これはただの文字列
正しい書き方
{
"text": "{{ $json.post_text }}"
}必ずJSONオブジェクトにすることです。
一番安全な方法
改行や記号が混ざるとJSONは簡単に壊れます。
そのため、これが一番安全です。
{{ JSON.stringify({ text: $json.post_text }) }}この場合だと、どんな文字でも壊れないです。
なぜJSONエラーは起きるのか
原因はシンプルです。
見た目は正しそうでも、実際はJSONじゃない
特にn8nでは、
- Expression
- 文字列結合
- 改行
が混ざるので壊れやすいです。
対処のコツ
JSONエラーで詰まったら、これをやればOKです。
① 一度シンプルなJSONに戻す
② JSON.stringifyで包む
③ Using JSONの設定を見直す
ほぼこれで解決します
まとめ
n8nのJSONエラーは、
・書き方ミス
・構造ミス
このどちらかです。
そして重要なのは、
APIではなく自分の設定が原因であることが多いです。

