APIの応答を確認する、設定ファイルの誤りを探す、ログに出た1行のJSONを読む。JSONは読めれば一瞬ですが、1行に詰まった状態では人間には読めません。そして構文エラーがあると、どこが悪いのかも分かりません。
このツールは、貼り付けたJSONを整形し、エラーがある場合は何行目の何文字目かと、その前後の文字列まで示します。あわせて、キーの総数、入れ子の深さ、配列の要素数、サイズも表示するので、扱っているデータの規模がひと目で分かります。
処理はすべてブラウザの中で行われます。入力したデータはサーバーに送信されません。APIキーや個人情報を含むJSONでも、そのまま貼り付けられます。
JSON整形・検証
ブラウザ内で処理します。入力したデータは送信されません。
- STATUS
- –
- SIZE
- –
- KEYS
- –
- DEPTH
- –
- ARRAY ITEMS
- –
JSONの構文エラー、原因の9割はこの5つ
エラーメッセージは英語で分かりにくいのですが、実際に起きる原因は限られています。上から順に確認してください。
| 原因 | 誤り | 正しい形 |
|---|---|---|
| 末尾のカンマ | [1, 2, 3,] | [1, 2, 3] |
| キーがクォートされていない | {name: "a"} | {"name": "a"} |
| シングルクォート | {'name': 'a'} | {"name": "a"} |
| コメントが書いてある | { // メモ | JSONにコメントは書けない |
| 数値の書き方 | {"n": .5} / {"n": 01} | {"n": 0.5} / {"n": 1} |
JavaScriptのオブジェクトとJSONは別物です。JavaScriptではキーのクォートを省略でき、シングルクォートも使え、末尾のカンマも許されます。その感覚のままJSONを書くと、上の1〜3が起こります。JSONで使える引用符はダブルクォートだけと覚えてください。
JSONで使える型は、6種類しかない
| 型 | 書き方 | 注意点 |
|---|---|---|
| 文字列 | "text" | ダブルクォートのみ |
| 数値 | 123 / -0.5 / 1e3 | NaNやInfinityは使えない |
| 真偽値 | true / false | 小文字のみ。TrueはNG |
| null | null | 小文字のみ。undefinedは使えない |
| 配列 | [1, "a", null] | 型が混ざっていても構わない |
| オブジェクト | {"k": "v"} | キーは必ず文字列 |
ここに日付型がない点が実務上の落とし穴です。日付は文字列として表現するしかなく、書き方はシステムごとに決めることになります。相互運用するなら、ISO 8601形式(2026-08-23T12:00:00Z)を使うのが最も安全です。「2026/8/23」のような形式は、受け取り側の解釈がばらつきます。
「二重にエスケープされたJSON」を元に戻す
ログやAPI応答で、こういう文字列を見ることがあります。
"{\"name\":\"takumi\",\"count\":3}"
これはJSONを文字列として、さらにJSONの中に入れた状態です。そのまま整形しようとしても、ただの文字列として扱われるため中身は展開されません。
このツールの「エスケープ解除」ボタンを押すと、一段外側の文字列を剥がして中身のJSONを取り出します。そのうえで「整形する」を押せば、読める形になります。二重・三重になっている場合は、解除を繰り返してください。
| 状態 | 見分け方 | 対処 |
|---|---|---|
| 普通のJSON | 先頭が { または [ | そのまま整形 |
| エスケープされたJSON | 先頭が " で、中に \" が並ぶ | エスケープ解除 → 整形 |
| 二重エスケープ | \\" が並ぶ | 解除を2回 |
大きなJSONを扱うときの注意
| サイズ | 挙動 | 対処 |
|---|---|---|
| 〜1MB | 問題なく処理できる | — |
| 1〜10MB | 整形に数秒かかる場合がある | ブラウザが応答するまで待つ |
| 10MB超 | ブラウザが重くなる | コマンドライン(jqなど)を使うほうが速い |
また、桁数の大きな整数は、精度が落ちることがあります。JavaScriptが安全に扱える整数は約9,007兆までで、それを超えるID(例:SNSの投稿ID)は、整形の過程で末尾が変わる可能性があります。この種のIDを扱うAPIは、はじめから文字列として返す設計になっていることが多く、そのままにしておくのが正解です。
キーの並べ替えが役に立つ場面
「キー順に並べ替え」は、見た目を整えるためだけの機能ではありません。2つのJSONを比較するときに効きます。
同じ内容でも、キーの並び順が違うだけで差分ツールは「違う」と判定します。両方をキー順に並べ替えてから比較すると、本当に値が違う箇所だけが浮かび上がります。設定ファイルの環境間比較や、API応答の変化を追うときに使ってください。
JSONと似た形式の使い分け
| 形式 | 特徴 | 向いている用途 |
|---|---|---|
| JSON | 機械が読みやすい。コメント不可 | API、データ交換 |
| YAML | 人が書きやすい。コメント可。インデントに厳格 | 設定ファイル |
| TOML | 設定向けに設計。曖昧さが少ない | 設定ファイル |
| CSV | 表形式に強い。入れ子は表現できない | 表計算との連携 |
| JSON Lines | 1行1JSON。追記しやすい | ログ、大量データの逐次処理 |
用語の意味を確認したい場合は、当サイトのIT用語辞典に117語を掲載しています。文字列のパターン確認には正規表現テスターも使えます。
コメント付きJSONと、末尾カンマを許す方言
設定ファイルを開いたら、JSONなのにコメントが書いてある。これはJSONC(JSON with Comments)と呼ばれる拡張で、一部のツールが独自に受け付けている形式です。標準のJSONではないため、このツールを含む一般的なパーサーは弾きます。
| 形式 | コメント | 末尾カンマ | 使われる場所 |
|---|---|---|---|
| JSON(標準) | 不可 | 不可 | API、データ交換 |
| JSONC | 可(// と /* */) | 可の実装が多い | エディタの設定ファイルなど |
| JSON5 | 可 | 可 | 人が手で書く設定 |
整形したいのにエラーになる場合は、コメント行を一時的に削除してから貼り付けてください。設定ファイルとして保存し直すときは、元のコメントを戻します。逆に、標準JSONを要求するAPIへコメント付きのまま送ると、相手側で必ずエラーになります。
API連携で詰まったときの、JSONまわりの確認手順
「APIが400を返す」「レスポンスが読めない」という場面で、原因がJSON側にあるかを切り分ける手順です。
| 順番 | 確認 | 読み取れること |
|---|---|---|
| 1 | 送っているJSONを、このツールで整形してみる | 整形できなければ、そもそも壊れている |
| 2 | Content-Type が application/json になっているか | ここが違うと、相手はJSONとして読まない |
| 3 | 文字コードがUTF-8か | 日本語が含まれる場合、Shift_JISだと文字化けする |
| 4 | 数値が文字列になっていないか | "count": "3" と "count": 3 は別物。型に厳密なAPIでは弾かれる |
| 5 | nullと空文字を取り違えていないか | null と "" は意味が違う。必須項目の判定に影響する |
| 6 | 入れ子の階層が仕様どおりか | DEPTHの数字を仕様と見比べる |
意外に多い原因が、コピー時に混入する不可視文字です。ブラウザやドキュメントからコピーすると、全角スペース、改行なしスペース、BOMなどが紛れ込むことがあります。エラー位置が「何もないところ」を指している場合は、これを疑ってください。該当箇所を一度削除して、半角スペースを打ち直すと直ります。
統計値の読み方|このツールが出す4つの数字
| 数字 | 意味 | 何に使えるか |
|---|---|---|
| SIZE | 整形後のバイト数 | APIのリクエスト上限やレスポンスサイズの見積もり |
| KEYS | オブジェクトのキーの総数(入れ子を含む) | データの規模感。仕様書との突き合わせ |
| DEPTH | 最も深い入れ子の階層 | 階層が深いほど、プログラム側の取り出しが複雑になる。5を超えたら構造の見直しを検討する目安 |
| ARRAY ITEMS | すべての配列の要素数の合計 | 件数の確認。ページングの取りこぼし検出 |
とくにARRAY ITEMSは、APIから「100件取れているはず」のデータが実際に何件かを一瞬で確認できます。ページング処理の実装ミスは、この数字を見るのが最短です。
JSONの構造を設計するときの、実務的な原則
自分でAPIやデータ形式を設計する側になったときの指針です。あとから直すのは大変なので、最初に決めておく価値があります。
| 原則 | 理由 |
|---|---|
| キー名は英小文字とアンダースコアで統一する | 大文字小文字の混在は、環境によって取り違えの原因になる |
| 日付はISO 8601の文字列にする | JSONに日付型はない。書式がばらつくと受け取り側が壊れる |
| 大きなIDは文字列で持つ | JavaScriptの安全な整数の上限を超えると、値が変わる |
| 配列は常に配列で返す | 1件のときだけオブジェクトを返す設計は、受け取り側に必ず分岐を強いる |
| 入れ子は浅く保つ | 深いほど取り出しのコードが読みにくく、壊れやすくなる |
| nullを使う意味を決めておく | 「未設定」「該当なし」「取得失敗」を区別するなら、別の表現が必要 |
基本的な用語はIT用語辞典で確認できます。文字列のパターン検証には正規表現テスター、日時の変換にはUNIXタイム変換もあわせてお使いください。