JSON整形 — 見やすく整形・圧縮・構文チェック
JSONの整形・圧縮・検証とキー並べ替え。エラーは行と列で表示
ブラウザー内で処理・アップロード不要
JSON整形ツールとは
1行に詰まったJSONをインデント付きの読みやすいテキストにしたり、不要な空白をすべて取り除いて小さくしたりするツールです。APIのレスポンスの確認、設定ファイルの整理、構文が壊れた箇所の特定に使えます。結果は入力に合わせてすぐ更新されるので、ボタンを押す必要はありません。
使い方
- JSONを入力欄に貼り付けます。
- スペース2・スペース4・タブのいずれかのインデント、または「圧縮」を選びます。
- キーを文字コード順に並べたい場合は「キーを並べ替え」をオンにします。オブジェクト内やオブジェクト配列内の入れ子にも適用されます。
- 結果をコピーします。エラーがある場合は行と列が表示されるので、そこから修正してください。
処理の仕組み
- 文法はRFC 8259(ECMA-404)のJSONです。キーと文字列はダブルクォートのみで、コメントや末尾のカンマは使えません。
- エラー位置の行と列は1から数えます。
\n、\r\n、単独の\rはいずれも改行1回として数えます。列は文字(コードポイント)単位で数えるため、絵文字も1列です。エラー行の下のキャレットはタブをそのまま反映します。Infinityにあふれる数値(1e999など)は警告付きでnullになり、512階層を超える入れ子ははっきりしたメッセージで拒否します。 - キーの並べ替えはすべての階層でコードユニット順(大文字が小文字より先)に行い、配列の順序は変えません。1つのオブジェクトに2回現れるキー(
{"a":1,"a":2})はJSONの規則どおり最後の値だけが残るため、結果は出力されますが、そのキーと重複した行・列を示す警告が表示されます。JavaScriptのオブジェクトの仕様上、"1"や"2"のような整数形式のキーは、オプションにかかわらず常に数値順で先頭に来ます。 - 出力では日本語・中国語・韓国語や絵文字をそのまま残し、
\nや\"などJSONで必要なものだけをエスケープします。"A"のようなUnicodeエスケープは"A"として書き出します。 - 数値はJavaScriptのNumberとして読み込みます。2^53を超える整数は正確には保持されず、警告でお知らせします。
例
| 入力 | オプション | 結果 |
|---|---|---|
{"b":1,"a":{"d":2,"c":3}} |
圧縮+キー並べ替え | {"a":{"c":3,"d":2},"b":1} |
{"name":"山田太郎"} |
スペース2 | 複数行、"name": "山田太郎" |
{"a": 1,} |
— | 1行9列:予期しない文字 } |
{"id": 12345678901234567890} |
圧縮 | {"id":12345678901234567000}(警告あり) |
よくある質問
JSONのどこが壊れているか分かりますか?
はい。入力を先頭から調べ、最初に規則に反した文字の行と列を報告し、その行を表示して該当箇所の下にキャレットを付けます。位置はブラウザーのエラーメッセージに頼らずツール自身が計算するため、どのブラウザーでも同じ結果になります。
コメントや末尾のカンマは使えますか?
使えません。RFC 8259で定義された厳密なJSONだけを受け付けます。コメント、末尾のカンマ、シングルクォートの文字列、引用符のないキーはエラーとして位置付きで報告します。
非常に大きな数値は変わってしまいますか?
変わることがあります。JavaScriptのJSONパーサーを使うため、9007199254740991(2^53-1)を超える整数は表現できる最も近い値に丸められます。そのような数値が入力に含まれると警告が表示されます。すべての桁が重要なIDは文字列にしてください。
JSONはサーバーに送信されますか?
いいえ。処理はすべてブラウザー内で行い、何もアップロード・保存しません。