このツールの動作
トークンの間の空白を取り除きます。それ以外は何もしません。
{
"id": 12345678901234567890,
"ratio": 1.0
}
{"id":12345678901234567890,"ratio":1.0}
起きなかったことに注目してください。1.0 は 1 になっておらず、識別子も末尾の桁を失っていません。素直に作った最小化ツール——値へ解析し、印字し直す——はその両方をやってしまいます。JavaScript の数値は倍精度浮動小数点で、保持できるのは十五桁ほど、小数点を書いたことも覚えていないからです。
ここでは、各数値をそれが実際にそうであるところの文字列として写します。
やらないこと
キー名を縮めること。 それこそが文書です。
並べ替えること。 キーの順序は JSON の解析器にとって意味を持ちませんが、このファイルの差分を次に読む人にとっては意味を持ちます。
文字列のエスケープを解くこと。 \u00e9 と é は同じ文字列であり、一方を他方へ書き換えれば、頼まれてもいない利益のためにバイト列が変わります。
どれくらい小さくなるか、正直なところ
字下げは、整形済み文書のおよそ十分の一、ときにはそれ以下です。得られるのはそれだけです。
JSON を HTTP で送るなら、圧縮のほうがはるかに効きます。"name" が五百回現れるようなキー名の繰り返しを gzip は見つけますが、そこは最小化ツールが触れてはならない部分です。埋め込むファイルや保存するファイルには最小化を、回線には圧縮を。必要なら両方を。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。