JSON整形ツールの使い方
- APIのレスポンス、設定ファイル、ログの1行など、JSONを入力欄に貼り付けます。貼り付けた時点でチェックと整形が行われます。
- 整形を選ぶと、スペース2つ・4つ・タブのいずれかでインデントした読みやすい形になります。圧縮(1行)を選ぶと、値と値のあいだの空白と改行をすべて取り除きます。
- キーを並べ替えるにチェックを入れると、すべてのオブジェクトのプロパティがアルファベット順になり、同じデータの2つの版を比べやすくなります。配列の順番は変わりません。
- 結果の横のコピーを押します。JSONが正しくない場合は、問題の内容、行と列、そしてその行の該当箇所の下に ^ の印を表示します。
整形・圧縮・構文チェックで何が変わり、何が変わらないか
整形(beautify、pretty print とも呼ばれます)は、プロパティや配列の要素を1行ずつに分け、階層の深さに応じて字下げします。圧縮はその逆で、いちばん短い形にします。どちらもデータの中身は変えません。構文チェックは、JSONの規格であるRFC 8259(ECMA-404と同じ文法)に照らして文字列を調べます。キーと文字列はダブルクォートで囲む、末尾にカンマを置かない、コメントは書かない、true・false・null は小文字、数値に先頭のゼロやNaN・Infinityを使わない、といった規則です。見つかった最初のエラーを報告します。
多くのオンライン整形ツールは、JavaScriptの JSON.parse で読み込んでから書き出し直しています。このツールは文字列を自前で読み、値を書かれたとおりに残します。
- 大きな数値が丸められません。JavaScriptが整数を正確に扱えるのは 9,007,199,254,740,991(253 − 1)までです。
JSON.parseを通すと、注文番号 12345678901234567890 は 12345678901234567000 に変わってしまいます。ここではそのまま残り、12.50 や 1E+2 といった書き方も変わりません。 - キーの順番が保たれます。JavaScriptのオブジェクトは「1」「2」のような整数に見えるキーを先頭に並べるため、
JSON.parseを通すと順番が動きます。ここでは並べ替えを選んだときだけ順番が変わります。 - 文字列は1文字ずつそのまま写します。
\u3042や\/のようなエスケープも、日本語を \u 形式に変えることもしません。 - 重複したキーを数えます。RFC 8259 は、どちらの値が採用されるかがプログラムによって異なるため、オブジェクト内のキー名は重複させないよう求めています。
日本語入力で起きやすい「全角」のエラー
日本語入力(IME)をオンにしたまま記号を打つと、JSONで使う半角の記号が全角になり、見た目はほとんど同じなのにエラーになります。このツールでの表示と直し方は次のとおりです。
| 入力した文字 | 表示されるエラー | 直し方 |
|---|---|---|
全角コロン「:」 {"name":1} | コロンがありません | 半角の : にする |
全角カンマ「,」・読点「、」 [1,2] | カンマがありません | 半角の , にする |
全角ダブルクォート「"」、かぎ括弧「」 {"a": 「b」} | 予期しない文字 | 半角の " で囲む |
| “ ” (Word、メモアプリ、チャットで自動変換されたもの) | カーブした引用符(“ ”) | 半角の " にする |
| 全角スペース | 見えない文字 | 削除するか半角スペースにする |
文字列の中身("山田 花子" のような値)には全角文字をそのまま使えます。全角にしてはいけないのは、JSONの骨組みになる記号 { } [ ] : , " と、文字列の外の空白だけです。
そのほかのよくあるエラーと直し方
| エラー | 正しくない例 | 正しい例 |
|---|---|---|
| 末尾に余分なカンマ | {"a": 1, "b": 2,} | {"a": 1, "b": 2} |
| シングルクォート | {'name': '花子'} | {"name": "花子"} |
| キー名に引用符がない | {name: "花子"} | {"name": "花子"} |
| コメント | {"port": 80 // web} | {"port": 80} |
| PythonやJavaScriptの値 | {"x": None, "y": True, "z": undefined} | {"x": null, "y": true, "z": null} |
| 先頭のゼロ(郵便番号など) | {"zip": 0600001} | {"zip": "060-0001"} |
| バックスラッシュが1つ | {"path": "C:\Users"} | {"path": "C:\\Users"} |
| 値が複数並んでいる | {"a": 1} {"b": 2} | [{"a": 1}, {"b": 2}] |
閉じ括弧が足りないとき、パーサーは最後まで読んで初めて気づくため、「JSONが途中で終わっています」は最後の行を指します。実際に抜けている } や ] はもっと上にあります。正しい部分だけを整形してみて、インデントがおかしくなる場所を探すのが近道です。
計算例:インデントでどれだけ大きくなるか
入力欄のサンプルは、ネットショップの注文を表す1行のAPIレスポンスで、335バイト、キーは18個、階層は4段です。UTF-8では日本語は1文字3バイト、英数字は1バイトです。整形すると27行になり、サイズは次のように変わります。
| 出力 | サイズ |
|---|---|
| 圧縮(1行) | 335バイト |
| タブ | 451バイト |
| スペース2つ | 523バイト |
| スペース4つ | 667バイト |
タブは1階層につき1バイトなので、整形したJSONの中ではいちばん小さくなります。人が読んだり編集したりするファイルなら読みやすさを優先し、大量に送ったり保存したりするJSONは圧縮するのが一般的です。
制限とヒント
- 大きなファイル:1MBのJSONなら、一般的なノートPCで1秒ほどでチェックと整形が終わり、長い結果もなめらかにスクロールできます。数十MBのファイルには jq などのコマンドラインツールのほうが向いています。
- JSON Lines(NDJSON)は1行に1つのJSONを並べた形式で、全体としては1つのJSONではありません。1行ずつ貼り付けるか、全体を
[ ]で囲んで行と行のあいだにカンマを入れてください。 - JSON5や「コメント付きJSON」は、一部の設定ファイルで使われ、コメントや末尾のカンマを許します。標準のJSONでは許されないため、ここではエラーになります。
- 表示されるのは最初のエラーだけです。直すとすぐに次のエラーがあれば表示されます。
- 文字列の長さやバイト数を数えたいときは文字数カウント、0と1の並びに直したいときは2進数変換が使えます。
JSONはお使いの端末から出ません
整形と構文チェックはブラウザの中で行われます。JSONにはAPIキーやトークン、顧客情報が入っていることも多いですが、どれもアップロードも記録もされません。保存もされないため、ページを再読み込みすると消えます。
よくある質問
JSONはサーバーに送られますか?
いいえ。整形と構文チェックはブラウザのJavaScriptで行うので、社外秘のデータにも使えます。ページを一度開けば、オフラインでも動きます。
JavaScriptでは動くのに、JSONとしてはエラーになるのはなぜですか?
JavaScriptのオブジェクトリテラルでは、引用符のないキー名、シングルクォート、末尾のカンマ、コメント、undefined や関数が使えますが、JSONでは使えません。JSONはどの言語でも同じように読めるよう、より厳しく決められたデータ形式です。
「JSONが途中で終わっています」とはどういう意味ですか?
何かが開いたままで文字列が終わったという意味です。多くは } や ] の閉じ忘れ、または閉じる引用符のない文字列です。コピーしたときに末尾が切れてしまった場合にも表示されます。
見た目は正しいのにエラーになります。
全角の記号が混ざっている可能性が高いです。日本語入力のまま打ったコロン「:」、カンマ「,」、引用符、全角スペースは半角と見分けにくいので、エラーの列番号と ^ の位置の文字を半角で打ち直してください。
キーを並べ替えるとデータが変わりますか?
いいえ。RFC 8259 はオブジェクトを「順序のない名前と値の組の集まり」と定めているので、キーの順番に意味はありません。配列は順序に意味があるため、要素は並べ替えません。
JSONを1行にするには?
出力で圧縮(1行)を選ぶと、改行とインデントを取り除いた1行のJSONになります。文字列の中の空白や改行(\n)はデータの一部なので、そのまま残ります。
最終更新日:2026年10月16日