JSONとは
JSONはもともと JavaScript のオブジェクトリテラル記法を由来としていますが、現在はほぼすべてのプログラミング言語でパーサーが用意されており、Python・Ruby・Java・Go・PHP など言語を問わず広く利用されています。
軽量・シンプル・可読性の高さから、従来のXMLに代わるデータ交換フォーマットとして急速に普及しました。REST APIのレスポンス形式としては事実上の標準となっています。
JSON整形とは
APIから返ってくるJSONや、ログに記録されたJSONはしばしば改行なしの1行形式(minified)になっています。そのままでは構造を把握しにくいため、整形ツールで可読性を高めるのが一般的な手順です。
整形前(minified)
{"user":{"id":1,"name":"田中 太郎","email":"[email protected]","roles":["admin","editor"],"address":{"city":"東京","zip":"100-0001"}}}
整形後(pretty printed)
{
"user": {
"id": 1,
"name": "田中 太郎",
"email": "[email protected]",
"roles": [
"admin",
"editor"
],
"address": {
"city": "東京",
"zip": "100-0001"
}
}
}
整形済みの形式はキーの階層・配列の要素数・値の型が一目でわかります。開発中のデバッグや、チームへの共有時には整形形式を使うのが基本です。本番環境への転送時はデータ量削減のためにminified形式を使い分けます。
基本構文とデータ型
| 型 | 表記例 | 説明 |
|---|---|---|
| string(文字列) | "Hello, 世界" |
必ずダブルクォートで囲む。UTF-8テキストに対応 |
| number(数値) | 42 / 3.14 / -7 |
整数・小数・負数に対応。16進数表記は不可 |
| boolean(真偽値) | true / false |
小文字固定。TrueやTRUEはエラー |
| null | null |
値が存在しないことを表す。小文字固定 |
| object(オブジェクト) | {"key": "value"} |
キーは必ずダブルクォートの文字列。値は任意の型 |
| array(配列) | [1, "two", true] |
異なる型の要素を混在させることができる |
JSONにはDateやundefinedなど他の言語が持つ型は存在しません。日時データは ISO 8601 形式の文字列("2026-04-13T00:00:00Z")として表現するのが一般的な慣例です。
よくある構文エラー5種
1. 末尾カンマ(Trailing Comma)
配列やオブジェクトの最後の要素にカンマを付けるとエラーになります。JavaScript はこれを許容しますが、JSON仕様では厳密にNGです。
// エラー
{
"name": "Alice",
"age": 30, // <-- 末尾カンマ NG
}
// 正しい
{
"name": "Alice",
"age": 30
}
2. シングルクォートの使用
文字列やキーをシングルクォート(')で囲むとエラーになります。JSONではすべてダブルクォート(")を使用します。
// エラー
{
'name': 'Alice' // <-- シングルクォート NG
}
// 正しい
{
"name": "Alice"
}
3. キーを引用符で囲んでいない
JavaScriptのオブジェクトリテラルでは { name: "Alice" } と書けますが、JSONではキーも必ずダブルクォートで囲む必要があります。
// エラー
{
name: "Alice" // <-- キーに引用符なし NG
}
// 正しい
{
"name": "Alice"
}
4. コメントの記述
標準JSON(RFC 8259)はコメントをサポートしていません。// や /* */ を書くと即座にパースエラーになります。設定ファイルでコメントが必要な場合はJSON5やJSONCの使用を検討してください。
// エラー
{
"port": 3000, // サーバーポート番号 <-- コメント NG
"debug": true
}
5. 不正なエスケープシーケンス
JSON文字列内でバックスラッシュを使う場合、使えるエスケープシーケンスは仕様で定められたものだけです。\"・\\・\/・\n・\r・\t・\uXXXX などが有効で、\dや\sなどは無効です。
// エラー
{
"path": "C:\Users\Alice" // <-- \U, \A が不正なエスケープ NG
}
// 正しい
{
"path": "C:\\Users\\Alice" // バックスラッシュは \\ と記述
}
JSON整形ツールの使い方
3ステップで整形できます。
- JSONを貼り付ける — 整形したいJSONテキストを左側の入力欄に貼り付けます。APIレスポンスや設定ファイルをそのままペーストできます。
- 整形ボタンを押す — 「整形」ボタンをクリックするとインデントを揃えた見やすいJSON形式に変換されます。構文エラーがある場合はエラーが発生している行番号とメッセージが表示されます。
- 結果をコピーする — 整形済みのJSONをコピーボタンでクリップボードに取り込みます。「圧縮」ボタンを押すとminified形式(1行)に変換することもできます。
- バリデーション結果を確認・修正する — 「整形」を押した際に構文エラーが表示されたら、行番号とメッセージを手がかりに余分なカンマ・括弧の不一致・引用符の閉じ忘れを修正します。
- 圧縮 (Minify) で 1 行化する — 「圧縮」ボタンで JSON を 1 行に圧縮できます。API リクエストペイロードや config ファイルのサイズ削減に活用します。
開発での活用場面
APIレスポンスの確認とデバッグ
REST APIを呼び出した際のレスポンスをそのまま整形ツールに貼り付けることで、データ構造を素早く把握できます。ネストが深いオブジェクトでも、インデントが揃えば階層関係が一目瞭然です。
JavaScript(fetch API)
const res = await fetch('https://api.example.com/users/1');
const data = await res.json();
// デバッグ時は JSON.stringify で整形して出力
console.log(JSON.stringify(data, null, 2));
Python(requests)
import requests, json
res = requests.get('https://api.example.com/users/1')
data = res.json()
# 整形して出力(indent=2 でインデントを揃える)
print(json.dumps(data, ensure_ascii=False, indent=2))
設定ファイルの管理
package.json・tsconfig.json・appsettings.json など、多くのツールやフレームワークがJSON形式の設定ファイルを採用しています。手動編集後にバリデーションツールを通すことで、ケアレスミスによるビルドエラーを未然に防げます。
NoSQL・ドキュメントDBのデータ確認
MongoDB や Firestore などのドキュメント指向データベースはJSONに近いフォーマットでデータを保存しています。エクスポートしたドキュメントを整形ツールで読みやすくすることで、データの構造確認やデバッグが効率化できます。
Python(json.dumps でDBデータを確認)
import json
# MongoDBから取得したドキュメント(辞書形式)
document = collection.find_one({"user_id": "12345"})
# ObjectIdなど非JSONシリアライザブルな型は変換が必要
print(json.dumps(document, default=str, ensure_ascii=False, indent=2))