JSONのバリデーション方法:よくあるエラーと修正方法
APIが400エラーを返します。ログには「Invalid JSON」と表示されています。ペイロードを見てもすべて正しく見えます — 47行目に隠れたシングルクォートに気づくまでは。JSONバリデーションエラーが厄介なのは、すべてを壊す小さなミスであることが多いからです。
最もよくあるJSON構文エラー
1. 末尾のカンマ
JSONで最も多いミスです。JavaScriptは末尾のカンマを許容するため、開発者はその習慣をJSONに持ち込みますが、JSONでは無効です。
{
"name": "Alex",
"age": 30
}
最後の値の後のカンマは必ず削除してください。
2. ダブルクォートの代わりにシングルクォート
JSONではダブルクォートが必須です。{'name': 'Alex'} はJavaScriptでは有効ですが、JSONでは無効です。すべてのシングルクォートをダブルクォートに置き換えてください。
3. クォートなしのキー
JSONのすべてのキーはクォートで囲まれた文字列でなければなりません。{name: "Alex"} は {"name": "Alex"} にすべきです。
4. 要素間のカンマの欠落
JSONを手動で編集する際に見落としやすい — キーと値のペア間のカンマを忘れること。
5. 括弧の不一致
{ を開いて ] で閉じたり、ネストが不正確な場合。対応する括弧をハイライトするJSONバリデーターを使用してください。
効果的なJSONバリデーション方法
手動クイックバリデーション
JSONを当サイトのJSONバリデーターに貼り付けてください。エラーの正確な行と文字位置がハイライトされます。すべての処理はブラウザ内で行われ、データはマシンの外に出ることはありません。
プログラムによるバリデーション
アプリケーションでは、すべての境界でJSONをバリデーションしてください。JavaScriptでは JSON.parse() をtry-catchで囲みます。Pythonでは json.loads() を例外処理付きで使用します。
スキーマバリデーション
構文バリデーションはJSONが整形式であることを確認します。スキーマバリデーションは正しい構造であることを確認します。当サイトのJSONスキーマバリデーターで期待される形状を定義してください。
JSONエラーのステップバイステップデバッグ
- まずフォーマット — JSONフォーマッターに貼り付けて適切なインデントを取得
- エラー位置を確認 — ほとんどのパーサーは行と列を報告します
- よくある原因を確認 — 末尾のカンマ、シングルクォート、クォートなしのキー
- 段階的にバリデーション — 大きなJSONの場合、セクションごとに個別にバリデーション
- バージョンを比較 — 動作するバージョンとJSON Diffで比較
自動バリデーションの設定
エディターで
JSON構文ハイライト、リンター、設定ファイルのスキーマバリデーションを有効にしてください。
CIパイプラインで
ビルドプロセスにJSONバリデーションを追加して、マージ前にエラーを検出してください。
APIで
受信JSONを決して信頼しないでください。API境界で構文とスキーマの両方をバリデーションしてください。役立つエラーメッセージを返してください。
よくある質問
JSONバリデーションとJSONスキーマバリデーションの違いは何ですか?
JSONバリデーションは構文(適切なクォート、括弧、カンマ)を確認します。JSONスキーマバリデーションは構造(正しいフィールド、正しい型、正しい制約)を確認します。
なぜJavaScriptでは動作するのに、他のパーサーでは失敗するのですか?
JavaScriptはJSON仕様よりも寛容です。末尾のカンマ、シングルクォート、コメントを許容します。厳密なパーサーはこれらすべてを拒否します。
関連リソース
- JSONフォーマットのベストプラクティス — 最初からクリーンなJSONを書く
- JSONスキーマバリデーションガイド — データ契約を強制する
- JSONバリデーターツール — JSON構文を即座にバリデーション
- JSONフォーマッターツール — JSONフォーマットを整形・修正