機能の説明
JSON ドキュメントを、有効な形式のまま最小サイズに書き換えます。トークンの間にあるすべてのスペース・改行・インデント文字が除去されます。入力はまずパースされるため、出力は同じデータを持つ有効な JSON であることが保証されます。無効な入力に対しては赤いエラーボックスが表示され、壊れた出力が返ることはありません。出力ヘッダーの削減バッジは、圧縮前後のサイズをバイト数と節約率(小数第 1 位まで)で報告します - バイトが削減された場合は緑、入力がすでにコンパクトだった場合はニュートラルで表示されます。すべてブラウザーの中でローカルに実行されます。
使い方
- JSON を左側の JSON input に貼り付けるか、Try: のチップをタップします - Pretty config、Whitespace-heavy、Already minified の各ケースで圧縮の様子を確認できます。Sample はデモドキュメントを、Clear はボックスを空にします。
- 圧縮されたドキュメントは右側の Minified にリアルタイムで表示され、その上に削減バッジ
N bytes → M bytes · saved X%が出ます。 - Copy は出力をコピーします。Download は
minified.jsonとして保存します(入力が有効な JSON のときのみ表示されます)。 - Copy share link は入力を URL にエンコードします。そのリンクを開くと、入力がそのままツールに復元されます。
例
Sample をタップ:
78 bytes → 64 bytes · saved 17.9% — {"name":"CosmoDev","tools":["json-minify","base64"],"open":true}
Whitespace-heavy チップは 2 つのルールを同時に示します - トークン間のパディングは消え、文字列内のスペースは生き残ります:
{ "greeting" : "hello world" } → {"greeting":"hello world"}(67 bytes → 41 bytes · チップのドキュメント全体で saved 38.8%)
すでに圧縮済みのドキュメントはそのまま変わらず:
{"a":1,"b":[1,2]} (17 bytes) → {"a":1,"b":[1,2]} (17 bytes) · saved 0%
圧縮によってドキュメントが長くなることもあります。再シリアライズの際に JSON の数値フォーマットが正規化されるためです:
{"a":1E3} (9 bytes) → {"a":1000} (10 bytes) · saved -11.1%
この負の数はバグではなく、正直に測ったサイズ差です。
JSON 圧縮の仕組み
圧縮が除去するのは空白だけです。キーの短縮も、データの削除も、並べ替えも行いません。入力をパースし、区切り文字ゼロでシリアライズし直すだけです。この操作は完全に可逆です - 圧縮済みドキュメントを整形すれば、同じ内容の読みやすい形式が復元されます。
カンマ・コロン・括弧がすでにトークンを区切っているため、その間のすべての空白文字は省略可能です:
| 整形済み | 圧縮済み | 除去されたもの |
|---|---|---|
{\n "a": 1\n} |
{"a":1} |
改行、インデント、: の後のスペース |
唯一の例外は引用符で囲まれた文字列の中の空白です。それはデータであり、手つかずのまま残ります。値の中の文章は、圧縮後もスペースを保ちます。
圧縮されたペイロードが重要になるのは、バイト数が繰り返し数えられる場面 - ブラウザーが取得する設定ファイル、大規模に配信される API レスポンス、URL や 1 行の script タグに埋め込まれる JSON、そして改行がシェルのクォートを壊すコマンドラインのワンライナー - です。
補足事項
- プライベート: パースとシリアライズはローカルで実行されます。どこへも送信されません。
JSON.stringify(JSON.parse(input))と等価です。- 符号に注意: 節約率が 0 または負なら、入力はすでにコンパクトだったということです。出力はそれでも正規形です。
- 共有リンクは URL に入力全文を運びます - 非常に大きなドキュメントは非常に長いリンクになります。
- 関連ツール: JSON Formatter、JSON Validator、JSON ↔ CSV Converter。