JSONをプリティプリントする方法
プリティプリント(整形表示)を行うと、生のJSONデータが適切なインデントと改行で読みやすくなります。これはデバッグ、ドキュメント作成、API開発、そして人間が構造化データを確認する必要があるあらゆるシナリオで不可欠です。プリティプリントがないと、JSONは1行の途切れのないテキストとして表示され、視覚的に解析することがほぼ不可能になります。このガイドでは、オンラインツールからコマンドラインユーティリティ、コードライブラリまで、さまざまな環境でJSONをフォーマットするすべての方法を説明します。
プリティプリントとは?
プリティプリント(ビューティファイやフォーマットとも呼ばれる)は、コンパクトなJSONに空白を追加して人間が読めるようにするものです。コンパクトなJSONオブジェクト {"name":"John","age":30,"hobbies":["reading","coding"]} は、構造化されインデントされた表現になります:
{
"name": "John",
"age": 30,
"hobbies": [
"reading",
"coding"
]
}
この処理はデータを変更しません——視覚的な表示だけが変わります。ほとんどのプリティプリンターは、設定可能なインデント(スペース2つ、スペース4つ、またはタブ)とオプションのキー並べ替えを提供します。また、シンタックスハイライト、折りたたみ可能なツリービュー、無効なJSONのエラーハイライトを提供するものもあります。
オンラインでの方法
Help2Code JSONフォーマッターツールは、シンタックスハイライト、バリデーション、ツリービューを備えたインスタントフォーマットを提供します。ソフトウェアをインストールせずにJSONをフォーマットする最も速い方法です。JSON文字列を入力エリアに貼り付けるだけで、ツールがリアルタイムでフォーマットします。主な機能は次のとおりです:
- 入力または貼り付け時のリアルタイムフォーマット
- キー、文字列、数値、ブール値、null値のシンタックスハイライト
- 行固有のエラーメッセージを表示するJSONバリデーション
- 深くネストされた構造をナビゲートするための折りたたみ可能なツリービュー
- フォーマット済み出力のファイルダウンロード
- フォーマット済みJSONをコンパクトな形式に戻すミニファイモード
- ワンクリックでクリップボードにコピー
このツールは、APIレスポンスを素早く確認したり、設定ファイルをデバッグしたり、フォーマット済みJSONを同僚と共有したりする必要がある開発者に最適です。
方法の比較
| 方法 | 速度 | オフライン | 最適な用途 |
|---|---|---|---|
| Help2Code JSONフォーマッター | 即時 | いいえ | クイックフォーマット、単発のタスク |
| ブラウザDevTools | 高速 | はい | 開発中のAPIレスポンスデバッグ |
| VS Code | 高速 | はい | 開発ワークフロー、ファイル編集 |
| jq(CLI) | 最速 | はい | スクリプト、自動化、パイプライン処理 |
| JavaScript | 状況による | はい | Webアプリでのプログラム的フォーマット |
| Python | 高速 | はい | データ処理パイプライン |
| PHP | 高速 | はい | 出力前のサーバーサイドフォーマット |
| Ruby | 高速 | はい | RailsおよびRubyアプリケーション |
| IntelliJ IDEA | 高速 | はい | エンタープライズJava/Kotlin開発 |
ブラウザDevTools
最新のブラウザはすべて、開発者ツールに組み込みのJSONプリティプリント機能を備えています。console.log() を使用してオブジェクトをコンソールに出力すると、ブラウザは自動的に折りたたみ可能なインタラクティブなツリービューで表示します。ただし、フォーマットをより細かく制御するには、JSON.stringify() をフォーマットオプション付きで使用します:
// ブラウザコンソールでの使用
const data = {
name: "John",
age: 30,
hobbies: ["reading", "coding"],
address: {
street: "123 Main St",
city: "Boston",
zip: "02101"
}
};
// 2スペースインデントでプリティプリント
console.log(JSON.stringify(data, null, 2));
// 4スペースインデントでプリティプリント
console.log(JSON.stringify(data, null, 4));
// タブインデントでプリティプリント
console.log(JSON.stringify(data, null, '\t'));
// オブジェクトの配列にはconsole.tableを使用
const users = [
{ id: 1, name: "Alice", role: "Admin" },
{ id: 2, name: "Bob", role: "User" }
];
console.table(users);
Chrome DevToolsのNetworkタブにも、APIレスポンス用の組み込みJSONビューアがあります。レスポンスに Content-Type: application/json がある場合、Previewタブが自動的にレスポンスボディをフォーマットし、シンタックスハイライトを適用し、折りたたみ可能なセクションで表示します。
VS Code
Visual Studio Codeは、JSONの編集とフォーマットに関して優れたサポートを標準で提供しています:
- ドキュメントのフォーマット:JSONコンテンツを選択し、
Shift+Alt+F(Windows/Linux)またはShift+Option+F(Mac)を押すか、右クリックして「ドキュメントのフォーマット」を選択します。 - 保存時の自動フォーマット:
settings.jsonに"editor.formatOnSave": trueを追加すると、JSONファイルの保存時に自動的にフォーマットされます。 - コメント付きJSON(
.jsonc):VS Codeはコメントを含むJSONファイルをサポートしており、settings.jsonやlaunch.jsonなどの設定ファイルで一般的に使用されています。
JSON処理のための追加のVS Code拡張機能:
- Prettier - カスタマイズ可能なオプションでJSONをサポートするコードフォーマッター
- JSON Tools - 並べ替え、ミニファイ、フォーマットのコマンドを追加
- Bracket Pair Colorizer - 深くネストされたJSONの対応する括弧を色分け
コマンドライン(jq)
jqは、フォーマット、フィルタリング、変換、クエリを処理する強力なコマンドラインJSONプロセッサです。すべてのプラットフォームでパッケージマネージャーから利用でき、スクリプトでのJSON操作に最適なツールです:
# 基本フォーマット - JSONをIDフィルターでjqにパイプ
echo '{"name":"test","value":123}' | jq .
# 色付き出力(パイプではデフォルトで無効)
echo '{"name":"test"}' | jq -C .
# ファイルから読み込んでフォーマット
jq . file.json
# フォーマット済み出力を保存
jq . file.json > formatted.json
# 特定のインデントでフォーマット(デフォルトは2)
jq --indent 4 . file.json
# JSONをミニファイ(すべての空白を削除)
jq -c . file.json
# オブジェクトキーをアルファベット順に並べ替え
jq -S . file.json
# 特定のフィールドを抽出してフォーマット
cat data.json | jq '.users' | jq .
# ワンコマンドでプリティプリントと色付け
cat messy.json | jq -C . | less -R
jqは他のコマンドラインツールと組み合わせて、強力なデータ処理パイプラインを構築することもできます:
# APIレスポンスを取得してフォーマット
curl https://api.example.com/users | jq .
# 最初のN項目のみをフォーマット
curl https://api.example.com/users | jq '.[:5]'
# 変換してフォーマット
cat data.json | jq '{name: .user.name, email: .user.email}'
言語別の方法
主要なプログラミング言語にはすべて、組み込みまたはライブラリベースのJSONプリティプリント機能があります:
JavaScript:
const pretty = JSON.stringify(obj, null, 2); // 2スペースインデント
const compact = JSON.stringify(obj); // 空白なし
// カスタムreplacer関数で値のフィルタリング/変換
const filtered = JSON.stringify(obj, ['name', 'age'], 2);
// 機密フィールドを秘匿するカスタムreplacer
const redacted = JSON.stringify(obj, (key, value) => {
if (key === 'password' || key === 'ssn') return '***';
return value;
}, 2);
// Node.jsでより細かく制御するにはutil.inspectを使用
const util = require('util');
console.log(util.inspect(obj, { colors: true, depth: null, sorted: true }));
Python:
import json
data = {"name": "John", "age": 30, "active": True}
# 2スペースインデントの基本プリティプリント
pretty = json.dumps(data, indent=2)
# キーをアルファベット順に並べ替え
pretty = json.dumps(data, indent=2, sort_keys=True)
# 非ASCII文字をそのまま保持(エスケープしない)
pretty = json.dumps(data, indent=2, ensure_ascii=False)
# よりコンパクトな出力用のカスタムセパレータ
compact = json.dumps(data, separators=(',', ':'))
# コンソールに直接プリティプリント
print(json.dumps(data, indent=2, sort_keys=True))
PHP:
$data = ["name" => "John", "age" => 30, "hobbies" => ["reading"]];
// 基本プリティプリント
$pretty = json_encode($data, JSON_PRETTY_PRINT);
// Unicode文字を保持
$pretty = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
// キーを並べ替え
$pretty = json_encode($data, JSON_PRETTY_PRINT | JSON_SORT_KEYS);
// HTML用のエスケープ付きフォーマット
$pretty = json_encode($data, JSON_PRETTY_PRINT | JSON_HEX_TAG | JSON_HEX_AMP);
Ruby:
require 'json'
data = { name: "John", age: 30, active: true }
# プリティプリント
puts JSON.pretty_generate(data)
# カスタムオプション
puts JSON.pretty_generate(data, indent: " ")
Go:
package main
import (
"encoding/json"
"fmt"
)
func main() {
data := map[string]interface{}{
"name": "John",
"age": 30,
}
pretty, _ := json.MarshalIndent(data, "", " ")
fmt.Println(string(pretty))
}
フォーマット時のJSONバリデーション
ほとんどのプリティプリントツールはJSONの構文も検証します。無効なJSONは、パーサーが意図された構造を判断できないためフォーマットできません。一般的なJSONバリデーションエラーは次のとおりです:
- 末尾のカンマ(
[1, 2,])- JavaScriptでは許可されますが、JSONでは無効です - シングルクォート(
'value')- JSONでは文字列に二重引用符が必要です - キーの引用符欠落(
{name: "John"})- キーは引用符で囲む必要があります - エスケープされていない制御文字 - タブ、改行、復帰は
\t、\n、\rのようにエスケープする必要があります - コメント - JSONはコメントをサポートしていません。コメントが必要な場合はJSONC形式を使用してください
各メソッドの使用どき
ワークフローに応じて適切な方法を選びましょう:
- 単発のフォーマット:オンラインツール(最速、インストール不要)
- 開発中:ブラウザDevToolsまたはVS Code(ワークフローに統合)
- スクリプトと自動化:jq(パイプライン対応、スクリプト可能)
- アプリケーションでのプログラム的フォーマット:言語別メソッド(JavaScriptの
JSON.stringify、Pythonのjson.dumps、PHPのjson_encode) - 大規模ファイル:jqまたはコマンドラインツール(ストリーミングにメモリ効率が良い)
まとめ
JSONのプリティプリントは、API、設定ファイル、データ処理を扱うすべての開発者にとって基本的なスキルです。オンラインツールからコマンドラインユーティリティ、主要なプログラミング言語まで、あらゆる環境に対応した方法があり、JSONを読みやすくする方法は必ずあります。重要なのは、コンテキストに応じて適切なツールを選ぶことです。クイックな確認には高速で便利なツールを、自動化されたパイプラインには強力でスクリプト可能なツールを選びましょう。