JSON圧縮(Minify)
JSONから空白を取り除き、有効でコンパクトな1行にします。貼り付けた時点でミニファイされます。
入力JSON
JSONをオンラインでミニファイ
整形されたJSONは人が読むためのもので、インデントや改行はパーサーにとって何の意味もありません。ミニファイでそれらを取り除けば、同じデータを少ないバイト数で1行に収められます。環境変数、コマンドライン引数、ログの行、リクエストボディで重宝します。
このページは、貼り付けた時点でミニファイするよう設定したJSON整形ツールを開きます。先にドキュメントを解析するので、コピーするのは常に有効なJSONです。
具体的に何が取り除かれるか
- インデントのスペースとタブ。
- キーや配列の要素の間にある改行。
:と,の後ろのスペース。- 引用符で囲まれた文字列の中身は何も削除しません。
"New York"のスペースは残ります。
ミニファイが役立つ場面
| 場面 | 1行にすると便利な理由 |
|---|---|
| 環境変数やシークレット管理サービス | 多くは1行の値を前提としている |
| curlやCLIの引数 | シェルで改行をエスケープせずに済む |
| 構造化ログ(JSON Lines) | 1行に1レコードという形式そのもの |
| データベースの列にJSONを保存する | 1行あたりのバイト数が減る |
| Webサイトで配信する静的なJSONファイル | 圧縮前の時点でもダウンロードが小さくなる |
ミニファイとgzipの違い
HTTPで配信するJSONでは、仕事の大半を圧縮が担います。gzipやBrotliは、繰り返し現れる空白を縮めるのが得意です。ミニファイにもわずかな効果があり、コストもかかりませんが、テキストが40%小さくなってもレスポンスが40%速くなるとは期待しないでください。ミニファイがはっきり有利なのは、ローカルストレージ、データベースのフィールド、メッセージキューなど、圧縮がかからない場所です。
コードでミニファイする
- JavaScript:
JSON.stringify(JSON.parse(text)) - Python:
json.dumps(obj, separators=(',', ':')) - jq:
jq -c . file.json - PHP:
json_encode(json_decode($text))
先に構文エラーを探したいときは、JSON構文チェックが何がどこで間違っているかを説明します。
関連ガイド
JSON入門:構文ルールとJavaScript・PythonでのJSONの扱い方
JSONは、最もシンプルで最も広く使われているデータ交換形式です。いくつかの短いルールと、各言語に2つずつある関数を覚えれば、どんなデータでも読み込み、作成し、保存できます。
Unexpected token in JSONとは?意味と直し方
このエラーは、解析しようとしたテキストがJSONではないことを意味します。エラーに出てくるトークンを見れば、代わりに何を受け取ったのかがたいてい分かります。
Unexpected end of JSON inputとは?意味と直し方
パーサーが完全な値を見つける前にテキストが尽きてしまった、という意味です。そしてほとんどの場合、原因はテキストがまったくなかったことです。