同じ JSON ファイル: 開発では明確なコード レビュー用に 2 つのスペース、本番環境では帯域幅のために縮小します。間違ったフォーマット戦略により diff が読み取れなくなったり、応答本文が肥大化したりします。
フロントエンド、バックエンド、テスト エンジニアを対象としたこの記事では、開発と運用における JSON 形式の目的と戦略、5 ステップのワークフロー、検証、キーの並べ替え、JSON5 に関するよくある誤解について説明します。その後、JSON ツールボックスを使用して、アップロードせずにブラウザーでローカルにフォーマットおよび圧縮できます。
フォーマット戦略が重要な理由
書式設定により、セマンティクスではなくプレゼンテーションが変更されます。ただし、Git diff の可読性、ログの grep、HTTP 応答サイズ、最初のバイトまでの時間には直接影響します。
チームは縮小された JSON をリポジトリにコミットします。PR はレビューできなくなります。あるいは、運用 API は 500 KB の非圧縮のきれいな JSON を配信し、弱いネットワークではモバイル クライアントの速度を低下させます。シナリオ固有の行動は必須です。
JSON フォーマットとは
JSON (Pretty Print) 形式では、データを変更せずにインデントと改行が挿入されます。 minify は、単一行または最小限の不要な空白を削除します。
フォーマットと圧縮
| 発生 | 空白/改行 | 一般的な使用方法 |
|---|---|---|
| 書式設定 | 維持および正規化 | 開発、デバッグ、ドキュメントの例 |
| 圧縮(縮小) | 取り除く | 実稼働 API、メッセージ キュー、ログ アーカイブ |
| 検証 | 構造は変更されず、構文のみが変更されます | フォーマットする前に必須 |
開発と本番
| 寸法 | 開発・テスト | 生産・輸送 |
|---|---|---|
| インデント | 2 つまたは 4 つのスペース、チーム全体で統一 | 縮小、インデントなし |
| キーソート | オプション、差分用 | ほとんどソートされていない、意味的な順序 |
| ファイル構成 | 大きな JSON をモジュールに分割する | 単一のペイロード、小さく保つ |
| リポジトリにコミットする | フォーマットされたコミット | 縮小アーティファクトなし (ビルドステップを除く) |
誰が書式ルールに従うべきですか?
| 役割 | 集中 | おすすめ |
|---|---|---|
| フロントエンド | モックデータ、API サンプル | 2 スペース (Prettier など) |
| バックエンド | APIドキュメント、ログ出力 | 優れたドキュメント、圧縮された API レスポンス |
| テスト | フィクスチャ、予想される JSON | フォーマット + ソートキー、より安定した差分 |
| DevOps | 構成 JSON、エクスポート | リポジトリ内で読み取り可能、配信前に縮小 |
推奨ワークフロー: 5 つのステップ
- 生の JSON (ログ、API コピー) を挿入またはインポートする
- 構文の検証: 末尾のカンマ、一重引用符、コメントの除外
- インデントを選択します: 2 スペース (フロントエンド) または 4 (一部のバックエンド標準)
- オプションでキーを並べ替えます: 同じ構造を持つ 2 つの JSON をより簡単に比較します
- 結果をコピーする - 実稼働サンプル用に縮小する
例:フォーマット前とフォーマット後
圧縮された 1 行:
{"user":{"id":1,"name":"Alice"},"tags":["dev","json"]}フォーマット済み (スペース 2 個):
{
"user": {
"id": 1,
"name": "Alice"
},
"tags": ["dev", "json"]
}よくある間違いとベストプラクティス
事前検証なしのフォーマット
構文エラーのあるテキストは正しくフォーマットできません。プロセス: 挿入→検証→フォーマット→コピー。
JSON5 構文の混合
このツールは標準の JSON のみをサポートします。引用符で囲まれていないキー、末尾のカンマ、コメントはサポートされません。まず、JS オブジェクトを有効な JSON に変換します。
大きなファイル
2MB を超える JSON はブラウザーで途切れることがあります。 CLI (jq) またはサブツリーへの分割を推奨します。
書式設定を他のツールと組み合わせる
| 次のステップ | 道具 | 目的 |
|---|---|---|
| 変更を比較する | JSON の差分 | 追加/変更/削除されたフィールド |
| フィールドの抽出 | JSONパス | パスと値を確認する |
| その他の形式 | JSON→YAMLなど。 | 運用または構成システム |
| 構造上の制約 | JSON スキーマ (外部) | リリース前に契約書を確認する |
よくある質問(FAQ)
書式を設定すると内容が変わりますか?
いいえ。空白と改行のみです。解析後のオブジェクトは意味的に同一です。
2スペースか4スペースでしょうか?
絶対的な基準ではありません。フロントエンドは多くの場合、Prettier と同様です。 Java バックエンドは多くの場合 4. チーム内で同意する。
なぜキーソートを行うのか?
同じコンテンツ、異なるキー順序 - 並べ替えがより明確になります。順序に関係する配列を混同しないでください。
縮小された JSON を再度読み取り可能にすることはできますか?
はい。再度フォーマットします - データは失われません。
データはサーバーにアップロードされますか?
いいえ、純粋にフロントエンド — 内部サンプル用でもあります (とにかく機密フィールドを削除してください)。
フォーマットが構文エラーで失敗するのはなぜですか?
一般的: 末尾のカンマ、一重引用符、エスケープされていない改行、コメント。バリデーターは行を表示します。
結論と次のステップ
フォーマットはコラボレーションの優れた手段です。開発環境では読みやすく、運用環境ではコンパクトで、常に最初に検証されます。チームの習慣として「検証→フォーマット→使用」を行うことで、リポジトリや本番環境での些細な JSON エラーが減少します。
エディターで保存時のフォーマットを有効にし、CI で重要なフィクスチャの JSON 構文をチェックします。メジャー リリース前の API サンプルの変更の差分。