JSONを貼り付けて「整形する」を押すと、改行と字下げを付けて読みやすく整えられます。1行への圧縮と構文チェックにも対応した無料ツールです。長い整数や小数の表記、キーの並び順を保持するため、APIの応答やJSONファイルの確認に使えます。
JSON整形ツール
長い整数・小数の表記やキーの順序を保ったまま、JSONを整形します。
本ツールの処理はブラウザ内で完結します。認証情報・個人情報は入力前に伏せてください。
入力後に「整形する」「圧縮する」「構文チェック」から選んで実行します。圧縮すると、文字列の外側の空白や改行を取り除いて1行にまとまります。整形・圧縮の結果は、コピーまたは .json ファイルとして保存できます。
字下げは2スペース・4スペース・タブから選べます。Macでは ⌘ + Enter、Windowsでは Ctrl + Enter でも整形できます。結果を書き換える場合は「結果を入力に戻す」を押して編集してください。
「.jsonファイルを開く」では、UTF-8のファイルを読み込めます。文字コードのエラーが出る場合は、エディターでUTF-8に保存し直してください。「サンプル」を押すと、長い整数や小数を含むデータの整形を試せます。
たとえば、次の1行のJSONは、
{"id":12345678901234567890,"name":"山田太郎","price":1.2300}
次のように整形されます。数値の桁や 1.2300 の末尾のゼロも残ります。
{
"id": 12345678901234567890,
"name": "山田太郎",
"price": 1.2300
}
整形・検証はブラウザ内で行い、ツール自体に入力内容の送信・自動保存機能はありません。APIキー、パスワード、個人情報は入力前に削除・マスクしてください。
JSONの構文エラーと直し方
構文に誤りがある場合は、原因とエラーを検出した行・文字位置を表示します。示された位置の直前に原因があることもあるため、前後のカンマ・引用符・括弧を確認してください。
| よくある誤り | 誤った例 | 正しい例 |
|---|---|---|
| 最後のカンマが余分 | {"a":1,} | {"a":1} |
| キーに引用符がない | {name:"山田"} | {"name":"山田"} |
| シングルクォートを使用 | {'a':1} | {"a":1} |
| 区切りのカンマがない | {"a":1 "b":2} | {"a":1,"b":2} |
True を大文字で記述 | {"active":True} | {"active":true} |
| 数値に先頭ゼロがある | {"count":0123} | {"count":123} |
IDや商品コードで先頭のゼロを残したい場合は、{"id":"0123"} のように文字列にします。文字列の外側にある全角スペースは構文エラーになりますが、{"name":"山田 太郎"} のような文字列内の全角スペースは使えます。
Pythonの辞書をそのままコピーすると、None や True、シングルクォートなどが原因でエラーになることがあります。JSONとして出力してから貼り付けてください。ChatGPTなどの回答を使う場合は、前後のMarkdownコードブロック記号(バッククォート3つ)を除きます。
対象は標準JSONです。コメントを含むJSONCや、一部の設定ファイルで使える末尾カンマには対応していません。1行に1件のJSONを並べる「JSON Lines」は、1件ずつ入力してください。
同じオブジェクト内に同名のキーが複数ある場合は、重複したキー名と場所を警告します。たとえば {"price":100,"price":200} は、読み込むプログラムによって一方の値が上書きされるため、意図した内容を確認してください。本ツールでは両方の値を残して整形します。
構文チェックの対象はJSONの文法です。APIが要求する項目名や値の型は、そのAPIの仕様と照合してください。
数値やキーの順序を変えずに整形できる理由
JSONをJavaScriptの JSON.parse() で読み込み、JSON.stringify() で書き出す方法では、元の表記が変わることがあります。たとえば、次のような違いが生じます。
| 入力した値 | JavaScriptで読み込んで書き出した例 |
|---|---|
12345678901234567890 | 12345678901234567000 |
9007199254740993 | 9007199254740992 |
1.2300 | 1.23 |
1e3 | 1000 |
JavaScriptの通常の数値型 Number が安全に扱える整数の範囲は、−9007199254740991〜9007199254740991です。この範囲を超える整数は、近い値に丸められることがあります。また、小数の末尾のゼロや指数表記は、読み込み・書き出しによって表記が変わります。
本ツールは数値の表記をそのまま保持し、JSONの構文を検証しながら文字列の外側の改行・空白を調整します。文字列内の空白や、\u3042 と「あ」の表記の違いも残ります。
たとえば {"b":1,"2":2,"1":3} を JSON.parse() と JSON.stringify() で処理すると、{"1":3,"2":2,"b":1} になります。本ツールでは入力のキー順を保つため、元データと見比べやすくなります。JSONのオブジェクトは仕様上、順序に依存しないデータとして扱います。
整形後のJSONを別のプログラムに渡した場合、数値の精度は受け取り側の処理によって決まります。長いIDなどを文字列で扱う設計なら、作成時から "12345678901234567890" のように引用符で囲むと桁を保持できます。
参考資料
- MDN:Number.MAX_SAFE_INTEGER — 安全な整数の範囲と丸め
- MDN:JSON.parse() — JSONの読み込みと数値の扱い
- RFC 8259(英語) — §4 オブジェクトと重複キー、§6 数値の形式と精度
