📋
← ガイド一覧に戻る

JSONプリティプリント:読みやすくJSONをフォーマットする方法

· タグ: json, pretty-print, json-formatter, json-indentation, developer-tools

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読みやすさのベストプラクティス

  1. フォーマット前に必ず検証する -- フォーマッターは無効なJSONを修正できません。まずJSONバリデーターを使用して構文エラーを検出してください。
  2. チーム標準を設定する -- インデントについて合意し(2スペースが業界標準)、Prettierまたはリンターで強制します。
  3. ネストを浅く保つ -- 深くネストされたJSON(4レベル以上)は、フォーマットに関係なく読みにくいです。可能であれば再構築を検討してください。
  4. 意味のあるキーを使用する -- 説明的で簡潔なキー名は、どのフォーマッターよりも読みやすさを向上させます。
  5. 末尾に改行を追加する -- POSIX標準に準拠し、diffノイズを避けるために、JSONファイルを改行文字で終了します。

当サイトの無料のオンラインJSONプリティプリントツールを試して、カスタマイズ可能なインデントと構文ハイライトでJSONデータを即座にフォーマットして美化してください。