JSONはAPI・設定ファイル・データベースなど、あらゆる場面で使われています。しかし、圧縮されたJSONは読みにくく、デバッグが困難です。このガイドではJSONの整形とは何か、なぜ重要なのか、そして効率的に行う方法を説明します。

JSONの整形とは

整形(プリティプリント)とは、適切なインデントと改行を加えて構造を読みやすくすることです。比較してみましょう:

圧縮状態:

{"name":"Alice","age":30,"skills":["js","python"]}

整形後:

{
  "name": "Alice",
  "age": 30,
  "skills": [
    "js",
    "python"
  ]
}

同じデータでも、可読性が大幅に変わります。

JSONの構文ルール

整形の前に、JSONが有効である必要があります。主なルール:

  • 文字列はダブルクォートを使う — "key"であり'key'は不可
  • キーは必ず文字列(クォート必須)
  • 末尾カンマは不可:[1, 2, 3,]は無効
  • コメントは標準JSONでは不可
  • として使えるもの:文字列、数値、オブジェクト、配列、truefalsenull

よくあるJSONエラー

エラー対処法
末尾カンマ{"a":1,}カンマを削除
シングルクォート{'a':'b'}ダブルクォートに変更
キーの未クォート{a: 1}キーをクォートで囲む
undefinedの値{"x": undefined}nullに変更
コメント// comment削除(JSONでは無効)

オンラインでJSONを整形する

最も手軽な方法は、ブラウザ上のツールを使うことです。インストール不要で、IDEに貼り付ける手間もありません。

ZeroTool JSON フォーマッター →

リアルタイムで整形し、構文エラーをその場でハイライト表示し、ワンクリックでコピーできます。

良いJSONフォーマッターの条件

  1. リアルタイム検証 — 入力しながらエラーを検出
  2. シンタックスハイライト — ネスト構造が一目でわかる
  3. エラーメッセージ — どこでパースが失敗したか明示
  4. コピーボタン — ワンクリックでクリップボードへ

コードでJSONを整形する

JavaScript / Node.js

const ugly = '{"name":"Alice","age":30}';
const pretty = JSON.stringify(JSON.parse(ugly), null, 2);
console.log(pretty);

JSON.stringify(value, replacer, space) の第3引数でインデント幅を指定します。

Python

import json

ugly = '{"name": "Alice", "age": 30}'
pretty = json.dumps(json.loads(ugly), indent=2)
print(pretty)

コマンドライン(jq)

echo '{"name":"Alice"}' | jq .
# ファイルを整形する場合:
cat data.json | jq .

jqはJSONを扱うための標準Unixツールです。brew install jqまたはapt install jqでインストールできます。

JSONの圧縮(ミニファイ)

整形の逆操作:すべての空白を削除してファイルサイズを削減します。データ送信前の最適化に有効です。

// JavaScript
const minified = JSON.stringify(JSON.parse(pretty));

ZeroTool JSON フォーマッターでは圧縮も対応しています。整形済みのJSONを貼り付けてMinifyをクリックするだけです。

JSONスキーマ検証

整形は構文チェックのみです。データの構造(必須フィールド、型、パターン)を検証したい場合はJSONスキーマを使います:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "required": ["name", "age"],
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer", "minimum": 0 }
  }
}

プログラムからの検証には、ajv(Node.js)やjsonschema(Python)が利用できます。

大きなJSONを扱うコツ

  • セクションの折りたたみ — 優れたフォーマッターはオブジェクト・配列ノードを折りたためる
  • キーで検索 — スクロールより速い
  • 配列のページネーション — 数千件の配列は表示行のみレンダリング
  • ストリーミングパーサー — 50MB超のファイルにはoboe.js(JS)やijson(Python)を使ってメモリに全ロードせず処理

まとめ

タスクツール
素早く整形・検証ZeroTool JSON フォーマッター
CLIで整形jq .
JavaScriptJSON.stringify(obj, null, 2)
Pythonjson.dumps(obj, indent=2)
スキーマ検証ajv、jsonschema

整形されたJSONはデバッグが速く、diffで読みやすく、エラーが隠れにくくなります。常にフォーマッターを使う習慣をつけましょう。

ZeroTool JSON フォーマッターで今すぐ整形 →