>_devtools-hub
JSONデバッグ開発tips

JSONのデバッグを素早く終わらせる5つの手法

JSONのパースエラー・型不一致・ネスト構造の問題を効率よく特定・修正するための実践的なデバッグテクニックを解説します。

REST APIのレスポンスを扱っていると、JSONのパースエラーや意図しないデータ構造に悩まされることは珍しくありません。エラーメッセージは往々にして「Unexpected token」や「undefined is not an object」といった手がかりの少ないものです。この記事では、JSONに関するよくある問題を素早く特定し、修正するための実践的な5つの手法を紹介します。

1. ブラウザのコンソールで即座に検証する

最も手軽な方法は、ブラウザのデベロッパーツールのコンソールで `JSON.parse()` を直接実行することです。エラーが発生した場合、ブラウザは行番号と列番号を含む詳細なエラーメッセージを出力します。たとえば `JSON.parse('{"name": "test",}')` と入力すると、末尾カンマの位置を正確に教えてくれます。APIから受け取ったレスポンスをそのままコピーして貼り付けるだけで、データの問題を素早く切り分けられます。また、コンソールではパースしたオブジェクトをインタラクティブに展開できるため、ネストが深い構造でも目的のフィールドを素早く見つけられます。

2. JSONフォーマッターでインデントを統一する

ミニファイ(圧縮)されたJSONは、エラー箇所を目視で確認することがほぼ不可能です。JSON フォーマッターを使ってインデントを整形すると、構造のズレや閉じ括弧の位置ミスが一目でわかるようになります。特に注目すべきポイントは、配列の末尾に不要なカンマがないか、文字列のクォートがシングルではなくダブルになっているか、数値がクォートで囲まれていないか(意図せず文字列になっていないか)の3点です。整形後のJSONをエディタの括弧マッチング機能と組み合わせると、対応する括弧がすぐに見つかり、ネストのズレを素早く特定できます。

3. JSONスキーマバリデーターで型を検証する

データが「存在する」かどうかだけでなく、「正しい型・フォーマット」かどうかを検証したい場合はJSONスキーマを使います。JSONスキーマはデータ構造の設計図で、`type: "string"` や `minLength: 1`、`format: "email"` といったルールを定義できます。バリデーターにJSONスキーマとデータを入力すると、どのフィールドがどのルールに違反しているかをリスト形式で出力します。フロントエンドとバックエンドの境界でデータ形式の認識齟齬が起きている場合、スキーマを共有の「契約」として扱うことでミスを事前に防げます。APIのドキュメントとしてスキーマを公開している場合は、OpenAPI Spec(旧Swagger)のスキーマ定義をそのまま流用することも可能です。

4. JSON Diff で変更前後を比較する

APIのレスポンス形式がバージョンアップで変わった、または環境によって返り値が微妙に異なるという状況では、2つのJSONを並べて差分を確認することが重要です。JSON Diffツールは、キーの追加・削除・型変更・値の変化を色付きでハイライト表示します。単純なテキスト比較と違い、フィールドの順序が変わっても意味上の差分のみを検出できるため、本質的な変更箇所を見落とさずに済みます。特に本番とステージングの環境差異を調べる場合や、外部APIのレスポンスが時刻によって変化する場合に重宝します。差分を確認した後は、変更されたフィールドに絞って単体テストを書く習慣をつけると、同じ問題の再発を防げます。

5. JSON Pathでネストを素早くナビゲートする

ネストが5層以上あるJSONから特定のフィールドを取り出す場合、手動でオブジェクトを辿るのは非効率です。JSON Pathはファイルシステムのパス記法に似た記述でフィールドを指定でき、`$.store.books[?(@.price < 10)].title` のようにフィルタリング条件も組み込めます。JSON Pathテスターにデータと式を入力すると、条件に一致するすべての値を即座に抽出します。コード上でも、Node.jsであれば `jsonpath` ライブラリ、PythonやGoにも同等のライブラリが存在するため、テスターで確認した式をそのままコードに移植できます。複雑なAPIレスポンスの特定フィールドだけをモニタリングする場合にも活用できます。

まとめ

JSONのデバッグは、適切なツールを使えば大幅に短縮できます。コンソール検証・フォーマット整形・スキーマバリデーション・Diff比較・JSON Pathという5つのアプローチを状況に応じて使い分けることで、「なぜこのエラーが出ているのか」にかける時間を最小化できます。特にスキーマバリデーションは事前にエラーを防ぐ投資として有効で、長期的なコードの安定性に大きく貢献します。

このツールで試す

JSON Studio

JSON フォーマッター & バリデーター

JSON開発者向けフォーマッター

使ってみる →

BOOTH

JSON Path Tester

JSONPath 式をリアルタイムでテスト・結果を即確認

開発者向けユーティリティJSON

使ってみる →

BOOTH

JSON Schema Validator

JSON と JSON Schema を並べてリアルタイムバリデーション

JSON開発者向けAPI

使ってみる →

BOOTH

JSON Diff

2つのJSONを比較して追加・削除・変更をカラーハイライトで表示

JSON開発ツールデバッグ

使ってみる →

BOOTH