JSON整形・バリデーションの基本 — 構文エラーの見つけ方と整形方法

JSON(JavaScript Object Notation)は、データ交換のための軽量テキストフォーマットです。Web APIのレスポンス・設定ファイル・データベースのドキュメント形式として広く使われており、RFC 8259 で標準化されています。本ガイドでは整形・バリデーションの方法からよくある構文エラーの対処法まで実践的に解説します。

最終更新: 2026年5月22日

目次
  1. JSONとは
  2. JSON整形とは
  3. 基本構文とデータ型
  4. よくある構文エラー5種
  5. JSON整形ツールの使い方
  6. 開発での活用場面
  7. よくある質問

JSONとは

定義: JSON(JavaScript Object Notation)とは、キーと値のペアで構造化されたデータを表現するテキスト形式です。RFC 8259 によって標準化されており、言語非依存で人間にも読みやすい設計になっています。

JSONはもともと JavaScript のオブジェクトリテラル記法を由来としていますが、現在はほぼすべてのプログラミング言語でパーサーが用意されており、Python・Ruby・Java・Go・PHP など言語を問わず広く利用されています。

軽量・シンプル・可読性の高さから、従来のXMLに代わるデータ交換フォーマットとして急速に普及しました。REST APIのレスポンス形式としては事実上の標準となっています。

JSON整形とは

整形(Pretty Print)とは: 圧縮状態の読みにくいJSONに対し、インデントと改行を付けて人間が読みやすい形に変換することです。逆に整形済みJSONを1行に圧縮する操作を「minify(ミニファイ)」と呼びます。

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形式を使い分けます。

基本構文とデータ型

JSONが扱えるデータ型は6種類に限定されています。この制約がJSONのシンプルさと互換性の高さを生んでいます。
表記例 説明
string(文字列) "Hello, 世界" 必ずダブルクォートで囲む。UTF-8テキストに対応
number(数値) 42 / 3.14 / -7 整数・小数・負数に対応。16進数表記は不可
boolean(真偽値) true / false 小文字固定。TrueTRUEはエラー
null null 値が存在しないことを表す。小文字固定
object(オブジェクト) {"key": "value"} キーは必ずダブルクォートの文字列。値は任意の型
array(配列) [1, "two", true] 異なる型の要素を混在させることができる

JSONにはDateやundefinedなど他の言語が持つ型は存在しません。日時データは ISO 8601 形式の文字列("2026-04-13T00:00:00Z")として表現するのが一般的な慣例です。

よくある構文エラー5種

JSONパースエラーの原因は決まっています。 以下の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整形ツールの使い方

Links Create の JSON整形ツール はインストール不要のブラウザ完結型です。入力したJSONの整形・圧縮・バリデーションをリアルタイムで行えます。

3ステップで整形できます。

  1. JSONを貼り付ける — 整形したいJSONテキストを左側の入力欄に貼り付けます。APIレスポンスや設定ファイルをそのままペーストできます。
  2. 整形ボタンを押す — 「整形」ボタンをクリックするとインデントを揃えた見やすいJSON形式に変換されます。構文エラーがある場合はエラーが発生している行番号とメッセージが表示されます。
  3. 結果をコピーする — 整形済みのJSONをコピーボタンでクリップボードに取り込みます。「圧縮」ボタンを押すとminified形式(1行)に変換することもできます。
  4. バリデーション結果を確認・修正する — 「整形」を押した際に構文エラーが表示されたら、行番号とメッセージを手がかりに余分なカンマ・括弧の不一致・引用符の閉じ忘れを修正します。
  5. 圧縮 (Minify) で 1 行化する — 「圧縮」ボタンで JSON を 1 行に圧縮できます。API リクエストペイロードや config ファイルのサイズ削減に活用します。

開発での活用場面

JSONは現代の開発フローのあらゆる場面に登場します。 整形・バリデーションのスキルはAPIデバッグから設定管理まで直結する実践知識です。

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.jsontsconfig.jsonappsettings.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))

よくある質問

JSONとXMLはどちらを使うべきですか?

現代のWeb APIではJSONが主流です。JSONはXMLより記述量が少なく、JavaScriptとの親和性が高く、パースが高速です。一方、XMLはスキーマ定義(XSD)や名前空間など厳密なドキュメント構造が必要な場面で依然利用されます。REST APIやモバイルアプリ連携ではJSONを選ぶのが一般的です。

JSONにコメントを書けますか?

標準のJSON(RFC 8259)ではコメントは仕様外であり、書くとパースエラーになります。設定ファイルでコメントを書きたい場合はJSON5やJSONCを使うか、"_comment" のような専用キーを設けるのが一般的な回避策です。

JSON5やJSONCとは何ですか?

JSON5はJSONを拡張した仕様で、コメント・末尾カンマ・シングルクォート文字列などが使えます。JSONCはVSCodeの設定ファイル(settings.json)などで採用されており、コメントと末尾カンマを許容します。どちらも標準JSONではないため、通常のJSONパーサーでは読み込めません。用途に応じて使い分けが必要です。

JSONファイルのサイズ上限はありますか?

JSON自体に規格上のサイズ上限はありません。ただしブラウザやサーバーのメモリ・処理時間に依存するため、数十MB以上のJSONを扱う場合はストリームパーサー(Node.jsの stream-json など)の利用を検討してください。APIレスポンスでは通常数KB〜数MB程度が実用範囲です。