手軽屋
ツール一覧

APIレスポンスのJSONを効率的に読み解く

REST APIから返ってくるJSONは「ただのデータの集まり」ではなく、いくつか典型的なパターンがあります。データ本体・メタ情報・エラー・ページネーションを見分けられるようになると、新しいAPIに触れたときの読解時間が一気に短くなります。

まずは整形する

APIレスポンスは1行で返ってくることがほとんど。最初にやるべきはインデント整形です。本ツールに貼り付けてスペース2で整形すると、構造が即座に見えるようになります。

整形すると見えてくるのが「最上位がオブジェクト{}か配列[]か」です。これがAPIの設計思想を表しています。

data / meta / pagination の3層構造

モダンなAPI(JSON:API仕様、GitHub REST v3など)は次のような3層構造を採用しています。

{ "data": [...], ← 実データ "meta": { ← メタ情報 "total": 200, "page": 1 }, "links": { ← 次ページのURL等 "next": "/items?page=2", "prev": null } }

一覧APIではこの形が多いです。data以外を見落とすと「全件取得した」と思って実は最初の20件だけだった、というミスが起きます。total件数とpage情報は必ず確認しましょう。

null・undefined・空配列の違い

APIレスポンスを読むときに混同しがちな3つの「無い」状態を区別できると、エラーが激減します。

値を読むときは「キーが存在するかチェック → null判定 → 配列なら length 確認」の順で確認します。JavaScriptでは `data.name ?? "不明"` のように nullish coalescing 演算子を使えば短く書けます。

エラーJSONの典型パターン

APIがエラーを返すとき、JSON構造はおおむね次のいずれかです。

パターン①: errorキー

{ "error": { "code": "INVALID_PARAMETER", "message": "page parameter must be positive integer" } }

パターン②: errors配列(複数エラー対応)

{ "errors": [ { "field": "email", "message": "invalid format" }, { "field": "age", "message": "must be >= 0" } ] }

パターン③: ステータスキー

{ "status": "error", "message": "Unauthorized" }

HTTPステータスコード(401・403・404・422・500)と組み合わせて読むことが多いです。HTTPステータスだけ見て「失敗」と判断するのではなく、JSON本体のerror messageを必ず読みましょう。

深いネストの読み方

GitHub APIのコミット情報のように、3〜4階層のネストは珍しくありません。

{ "commit": { "author": { "name": "Tanaka", "email": "tanaka@example.com", "date": "2026-06-15T10:00:00Z" }, "message": "Fix bug", "tree": { "sha": "abc123" } } }

整形後のインデント幅でネスト階層が見えるので、欲しい値までのパス(commit.author.name)が即座に分かります。JavaScriptで取り出すなら data.commit?.author?.name のようにオプショナルチェイニング(?.)を使うと、途中のキーが無い場合でもエラーになりません。

ページネーションとカーソル

一覧APIでは「全件返ってこないこと」が前提です。ページネーションの方式を見分けることが重要です。

ループでデータ取得するときは、レスポンスのpagination情報を見て「次があるか」を判定します。next === null や hasNextPage: false で停止条件を作るのが定石です。

JSON整形・チェックツールはこちら → /json-format/

本記事はGitHub REST API公式ドキュメント、Stripe API リファレンス、JSON:API v1.1仕様、MDN HTTP ステータスコードを参照しています。