JSONプリティプリント:読みやすくJSONをフォーマットする方法
JSONプリティプリントとは何か?
JSONプリティプリントは、生のコンパクト(縮小化された)JSONデータを取得し、適切なインデント、改行、スペーシングを加えて再フォーマットし、人間が読めるようにするプロセスです。プリティプリントされたJSONドキュメントは、一貫したインデントと明確な構造的フォーマットを使用して、ネストされたオブジェクトと配列の階層を明らかにします。
同じデータのこれら2つの表現を比較してください:
縮小化(読みにくい):
{"users":[{"id":1,"name":"Alice","roles":["admin","editor"]},{"id":2,"name":"Bob","roles":["viewer"]}],"total":2}
プリティプリント(読みやすい):
{
"users": [
{
"id": 1,
"name": "Alice",
"roles": ["admin", "editor"]
},
{
"id": 2,
"name": "Bob",
"roles": ["viewer"]
}
],
"total": 2
}
プリティプリントと縮小化されたJSON
プリティプリントされたJSONと縮小化されたJSONのどちらを選ぶかは、ユースケースによって異なります:
| 観点 | プリティプリント | 縮小化 | |--------|-------------|----------| | 読みやすさ | 高い -- 明確な構造 | 低い -- すべてのデータが1行 | | ファイルサイズ | 大きい(より多くの空白) | 小さい(空白のオーバーヘッドなし) | | ネットワーク転送 | 大規模なペイロードでは遅い | 高速、帯域幅が少ない | | デバッグ | 開発に理想的 | 検査には非実用的 | | 本番環境での使用 | ほとんど使用されない | APIレスポンスの標準 |
本番APIは通常、帯域幅を削減するために縮小化されたJSONを提供し、開発者は開発およびデバッグ中にJSONをプリティプリントします。
インデントスタイル
ほとんどのフォーマッターは、2つの一般的なインデントスタイルをサポートしています:
2スペースインデント(最も一般的)
{
"name": "Alice",
"age": 30,
"address": {
"city": "New York"
}
}
推奨: JavaScript/TypeScriptプロジェクト、モダンなWeb開発、およびほとんどの一般的な用途。
4スペースインデント
{
"name": "Alice",
"age": 30,
"address": {
"city": "New York"
}
}
推奨: Pythonプロジェクト(PEP 8スタイル)および明確さのために広いインデントを好むチーム。
タブインデント
特にユーザーがエディタでタブ幅を調整するアクセシビリティ重視のワークフローでは、タブベースのインデントを好む開発者もいます。
適切なインデントの選択
ほとんどのチームは、読みやすさと水平スペース効率のバランスが取れているため、2スペースに標準化しています。JavaScriptエコシステム(Node.js、React、Vue)は圧倒的に2スペースインデントを使用しています。Pythonが多い環境で作業する場合、4スペースインデントの方が自然に感じられるかもしれません。重要なのは一貫性です -- スタイルを1つ選び、PrettierやEditorConfigなどのツールでプロジェクト全体に強制してください。
さまざまなプログラミング言語でのJSONプリティプリント
JavaScript / Node.js
const formatted = JSON.stringify(data, null, 2);
console.log(formatted);
Python
import json
formatted = json.dumps(data, indent=2)
print(formatted)
Java
import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper mapper = new ObjectMapper();
String formatted = mapper.writerWithDefaultPrettyPrinter()
.writeValueAsString(data);
Go
import "encoding/json"
formatted, _ := json.MarshalIndent(data, "", " ")
fmt.Println(string(formatted))
Ruby
require 'json'
puts JSON.pretty_generate(data)
JSONをプリティプリントする方法
オンラインJSONフォーマッターを使用する
最も迅速な方法は、無料のオンラインJSONフォーマッターを使用することです -- JSONを貼り付けるだけで、構文ハイライトとエラー検出付きの即時フォーマット済み出力が得られます。
コマンドラインツールを使用する
jqを使用する場合(最も人気):
cat file.json | jq .
Pythonを使用する場合:
python -m json.tool file.json
Node.jsを使用する場合:
node -e "const d = require('./file.json'); console.log(JSON.stringify(d, null, 2));"
ブラウザの開発者ツール
すべての主要ブラウザは、NetworkタブでJSONレスポンスを自動的にフォーマットします:
- Chrome DevTools:NetworkタブがJSONレスポンスを自動的にプリティプリント
- Firefox Developer Tools:JSONレスポンスが折りたたみ可能なツリービューで表示される
- Safari Web Inspector:JSONプレビューに自動フォーマットが含まれる
JSONフォーマット用のIDEプラグイン
VS Code
VS Codeは優れた組み込みのJSONサポートを備えています。Shift+Alt+F(Windows/Linux)またはShift+Option+F(macOS)を使用して、任意のJSONファイルをフォーマットできます。追加の拡張機能でエクスペリエンスが向上します:
- Prettier -- JSON、JSONC、その他多くの言語を一貫してフォーマット
- JSON Tools -- キーボードショートカットでJSONをソート、縮小化、フォーマット
- JavaScript Booster -- 高度なJSON操作機能
JetBrains IDE(IntelliJ、WebStorm、PyCharm)
- 組み込みフォーマッター:
Ctrl+Alt+L(Windows/Linux)またはCmd+Option+L(macOS) - 貼り付け時にJSONの自動検証とフォーマット
Vim / Neovim
" Format JSON in place
:%!jq .
高度なJSONフォーマットオプション
モダンなJSONフォーマッターは、基本的なインデント以上のものを提供します:
- キーの並べ替え -- 一貫した出力のためにオブジェクトキーをアルファベット順にソート
- 構文ハイライト -- キー、文字列、数値、ブール値を色分け
- 折りたたみ可能なツリー -- ネストされた構造を展開/折りたたみしてナビゲーションを容易にする
- 行番号 -- デバッグ中に特定の場所を参照
- エラーハイライト -- 詳細なメッセージで構文エラーを視覚的にマーク
JSON読みやすさのベストプラクティス
- フォーマット前に必ず検証する -- フォーマッターは無効なJSONを修正できません。まずJSONバリデーターを使用して構文エラーを検出してください。
- チーム標準を設定する -- インデントについて合意し(2スペースが業界標準)、Prettierまたはリンターで強制します。
- ネストを浅く保つ -- 深くネストされたJSON(4レベル以上)は、フォーマットに関係なく読みにくいです。可能であれば再構築を検討してください。
- 意味のあるキーを使用する -- 説明的で簡潔なキー名は、どのフォーマッターよりも読みやすさを向上させます。
- 末尾に改行を追加する -- POSIX標準に準拠し、diffノイズを避けるために、JSONファイルを改行文字で終了します。
当サイトの無料のオンラインJSONプリティプリントツールを試して、カスタマイズ可能なインデントと構文ハイライトでJSONデータを即座にフォーマットして美化してください。