JSON完全ガイド:データのフォーマット、検証、変換
JSONについて知っておくべきすべてのこと -- 基本的な構文から高度なフォーマット技術まで。プロの開発者のようにJSONデータのフォーマット、検証、変換、トラブルシューティングを学びましょう。
JSONとは何か、なぜ重要なのか?
JSON(JavaScript Object Notation)は、サーバーとWebアプリケーション間のデータ転送における事実上の標準となった軽量データ交換フォーマットです。2000年代初頭にDouglas Crockfordによって作成されたJSONは、人間が読み書きしやすく、マシンが解析・生成しやすいように設計されています。
今日、JSONはあらゆる場所で使われています。REST APIはリクエストとレスポンスのボディに使用しています。package.json、tsconfig.json、.eslintrc.jsonなどのツールの設定ファイルはJSONに依存しています。MongoDBのようなデータベースはJSON形式でドキュメントを保存しています。マイクロサービスアーキテクチャにおけるサービス間通信でさえ、主にJSONを使用しています。
JSONの理解は現代の開発者にとって任意ではありません -- 基本的なスキルです。APIデータを扱うフロントエンド開発者、APIを設計するバックエンドエンジニア、設定ファイルを管理するDevOpsエンジニアなど、毎日JSONを使って作業しています。
JSON構文:完全なルール
JSONの構文は一見シンプルですが、細部を間違えるとデバッグが難しいパースエラーにつながります。完全なルールは以下の通りです:
データ型
JSONは正確に6つのデータ型をサポートしています:
- 文字列: ダブルクォートで囲まれたテキスト。例:
"こんにちは世界" - 数値: 整数または浮動小数点。例:
42、3.14、-7、1.5e10 - ブーリアン:
trueまたはfalse(小文字のみ) - Null:
null値(小文字のみ) - オブジェクト: 波括弧
{}で囲まれたキーと値のペアの順不同コレクション - 配列: 角括弧
[]で囲まれた値の順序付きリスト
主要な構文ルール
- すべてのキーはダブルクォートで囲まれた文字列でなければなりません(シングルクォートは使用不可)
- キーと値のペアはコロン(
:)で区切ります - 複数のペアまたは値はカンマ(
,)で区切ります - 最後の項目の後の末尾カンマは許可されていません
- コメントは許可されていません(JavaScriptとは異なり)
- ルート要素はオブジェクト
{}または配列[]でなければなりません
有効なJSONの例
{
"name": "John Doe",
"age": 30,
"isActive": true,
"email": null,
"address": {
"street": "123 Main St",
"city": "New York",
"zipCode": "10001"
},
"skills": ["JavaScript", "Python", "SQL"],
"projects": [
{
"name": "Website Redesign",
"status": "completed",
"year": 2025
},
{
"name": "API Migration",
"status": "in-progress",
"year": 2026
}
]
}
最も一般的な10のJSONエラー(とその修正方法)
経験豊富な開発者でもこれらのミスを犯します。最も頻繁なJSON構文エラーとその解決策を紹介します:
1. 末尾のカンマ
これは最も一般的なJSONエラーです。JavaScriptは末尾のカンマを許可しますが、JSONは許可しません。
// 誤り - "SQL"の後に末尾のカンマ
{
"skills": ["JavaScript", "Python", "SQL",]
}
// 正しい
{
"skills": ["JavaScript", "Python", "SQL"]
}
2. ダブルクォートの代わりにシングルクォート
JSONはすべての文字列とキーにダブルクォートを必要とします。シングルクォートやバッククォートはパースエラーを引き起こします。
// 誤り
{\'name\': \'John\'}
// 正しい
{"name": "John"}
3. クォートなしのキー
JavaScriptオブジェクトとは異なり、JSONのキーは常にクォートで囲まれた文字列でなければなりません。
// 誤り
{name: "John", age: 30}
// 正しい
{"name": "John", "age": 30}
4. UndefinedまたはNaNの使用
JSONはundefined、NaN、Infinityをサポートしていません。代わりにnullを使用してください。
5. JSONのコメント
JSONはコメントをサポートしていません。設定ファイルにコメントが必要な場合は、代わりにJSONC(コメント付きJSON)またはYAMLの使用を検討してください。
6. 項目間のカンマの欠落
// 誤り - "age"と"city"の間にカンマが欠落
{"name": "John" "age": 30}
// 正しい
{"name": "John", "age": 30}
7. 文字列内のエスケープされていない特殊文字
バックスラッシュ、ダブルクォート、改行、タブなどの文字列内の文字はエスケープが必要です。
// 誤り
{"path": "C:\Users\file.txt"}
// 正しい
{"path": "C:\Users\file.txt"}
8. 16進数の使用
JSONは10進数のみをサポートしています。0xFFのような16進数値は無効です。
9. 数値の先頭ゼロ
007や01のような数値はJSONでは無効です。代わりに7や1を使用してください。
10. ブーリアン/Nullの不正な大文字小文字
ブーリアンとnullは小文字でなければなりません:true、false、null。True、FALSE、NULLのような値は無効です。
これらのエラーを見つける最速の方法は?JSONを当サイトのJSONフォーマッター&バリデーターに貼り付けてください -- エラーが発生している正確な行と文字がハイライトされます。
JSONフォーマットのベストプラクティス
適切にフォーマットされたJSONは見た目だけの問題ではありません -- 可読性、デバッグ速度、コラボレーション品質に直接影響します。
インデント
JSON全体で一貫したインデントを使用しましょう。最も一般的な2つのスタイルは:
- 2スペース: JavaScript/Node.jsエコシステムで人気(Googleスタイルガイド)
- 4スペース: Pythonエコシステムや多くの企業標準で人気
- タブ: あまり一般的ではありませんが、アクセシビリティの観点から一部の開発者に好まれています
JavaScriptでは、JSON.stringify(data, null, 2)を使用して好みのインデントでJSONをフォーマットできます。3番目の引数はスペースの数です。
キーの命名規則
- camelCase:
"firstName"-- JavaScript APIで最も人気 - snake_case:
"first_name"-- PythonおよびRuby APIで一般的 - kebab-case:
"first-name"-- あまり一般的ではなく、一部のREST APIで使用
最も重要なルールは一貫性です。1つの規則を選択し、API全体または設定全体で一貫して使用しましょう。
ミニファイ vs. 整形
帯域幅を最小限に抑えるために、本番APIとデータ転送にはミニファイされたJSON(空白なし)を使用しましょう。設定ファイル、ドキュメント、デバッグ、ログには整形されたJSON(インデント付き)を使用しましょう。
JSON vs. XML vs. YAML:いつ何を使うか
JSONは唯一のデータフォーマットではありません。代替案との比較は以下の通りです:
| 機能 | JSON | XML | YAML |
|---|---|---|---|
| 可読性 | 良い | 普通(冗長) | 優秀 |
| ファイルサイズ | 小さい | 大きい(タグのオーバーヘッド) | 最小 |
| コメント | 非対応 | 対応 | 対応 |
| データ型 | 6種類 | テキストのみ(スキーマが必要) | 豊富(日付など) |
| スキーマ検証 | JSON Schema | XSD、DTD | 限定的 |
| 最適な用途 | API、設定ファイル | ドキュメント、SOAP API | 設定、CI/CD |
JSONを使うべき場合: REST API、Webアプリケーション、モバイルアプリ、または軽量で高速なデータ交換が必要なあらゆるシナリオの構築時。
XMLを使うべき場合: レガシーシステム、SOAP API、ドキュメント形式(SVG、RSSなど)での作業時、または豊富なスキーマ検証が必要な場合。
YAMLを使うべき場合: 設定ファイル(Docker Compose、Kubernetes、GitHub Actions)の作成時。人間の可読性とコメントが優先される場合。
これらのフォーマット間の変換が必要ですか?当サイトのツールで簡単にできます:JSONからYAML、YAMLからJSON、XMLフォーマッターがすべて無料でご利用いただけます。
JSONの実践的な変換作業
JSONからCSV
スプレッドシートでJSONデータを分析したり、データベースにインポートしたりする必要がある場合、JSONからCSVへの変換は不可欠です。これは特に、技術者でないステークホルダーと共有する必要があるAPIデータを扱う場合によく見られます。
当サイトのJSONからCSVコンバーターはネストされたオブジェクト、配列、複雑なデータ構造を処理し、表形式のCSVフォーマットにフラット化します。JSONキーから自動的に列ヘッダーを検出し、欠落フィールドやネストされた値などのエッジケースを処理します。
CSVからJSON
逆の操作 -- CSVからJSONへの変換 -- も同様に重要です。スプレッドシートからAPIやデータベースにデータを移行する際、CSVからJSONコンバーターは表形式のデータを適切に構造化されたJSON配列に変換します。
JSONからYAMLへ、またその逆
JSONとYAML間の切り替えはDevOpsエンジニアにとって日常的な作業です。Docker Composeファイル、Kubernetesマニフェスト、CI/CDパイプラインはYAMLを使用し、APIとアプリケーションコードはJSONを使用します。当サイトのJSONからYAMLおよびYAMLからJSONコンバーターにより、これらの変換がシームレスになります。
APIにおけるJSON:リクエストとレスポンスの処理
ほとんどの現代のAPIはJSONを使用して通信しています。JSONリクエストを正しく構造化し、JSONレスポンスを解析する方法を理解することは、API開発にとって不可欠です。
一般的なAPIレスポンス構造
{
"status": "success",
"data": {
"users": [
{
"id": 1,
"name": "Alice",
"email": "[email protected]",
"role": "admin"
},
{
"id": 2,
"name": "Bob",
"email": "[email protected]",
"role": "user"
}
],
"pagination": {
"page": 1,
"perPage": 20,
"total": 150,
"totalPages": 8
}
},
"meta": {
"requestId": "abc-123-def",
"timestamp": "2026-02-22T10:30:00Z"
}
}
API JSONのベストプラクティス
- 一貫したエンベロープ: レスポンスは常にステータス、データ、エラーフィールドを持つ標準構造でラップする
- ページネーションメタデータ: リストエンドポイントにはページ、リミット、総数、ナビゲーションリンクを含める
- エラーレスポンス: コード、メッセージ、詳細フィールドを持つ一貫したエラーフォーマットを使用する
- 日付フォーマット: すべての日付/時間値にISO 8601フォーマット(
2026-02-22T10:30:00Z)を使用する - Null処理: 一貫性のために、フィールドを省略するのではなく
null値を含める
JSON Schema:データ構造の検証
JSON Schemaは、JSONドキュメントの注釈と検証を可能にするボキャブラリーです。JSONデータの期待される構造、型、制約を定義します。
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"age": {
"type": "integer",
"minimum": 0,
"maximum": 150
},
"email": {
"type": "string",
"format": "email"
}
},
"required": ["name", "email"]
}
JSON Schemaは、APIコントラクトの検証、フォーム検証、設定ファイルの検証、自動テストにおいて非常に価値があります。ほとんどのプログラミング言語にはJSON Schema検証ライブラリがあります。
パフォーマンスのヒント:大きなJSONファイルの操作
大きなJSONファイル(メガバイト以上)を扱う場合、パフォーマンスが問題になります:
- ストリーミングパーサー: JSON全体をメモリに読み込む代わりに、Node.jsの
JSONStreamやPythonのijsonのようなストリーミングパーサーを使用する - 転送用のミニファイ: ネットワーク経由でJSONを送信する前にすべての空白を削除する。これによりファイルサイズを20-40%削減できる
- 圧縮: JSONレスポンスに対してサーバーでgzipまたはBrotli圧縮を有効にする
- ページネーション: 1つのレスポンスで何千ものレコードを返す代わりに、ページネーションを実装する
- フィールド選択: クライアントが必要なフィールドのみをリクエストできるようにする(GraphQLのように)
すべての開発者が知っておくべきJSONツール
JSONフォーマッター以外にも、JSONツールキットを完成させる関連ツールをご紹介します:
- JSONフォーマッター&バリデーター -- シンタックスハイライト付きでJSONをフォーマット、検証、整形
- JSONからCSVコンバーター -- JSONデータをスプレッドシート対応のCSV形式に変換
- CSVからJSONコンバーター -- 表形式CSVデータを構造化JSONに変換
- JSONからYAMLコンバーター -- JSONとYAML形式間の切り替え
- YAMLからJSONコンバーター -- YAML設定をJSONに変換
- JSONテーブルビューアー -- JSONデータをソート・フィルター可能なテーブル形式で表示
- Base64エンコーダー/デコーダー -- JSONペイロードでよく使用されるBase64の符号化/復号化
- データフォーマットコンバーター -- 複数のデータ形式間の変換
まとめ
JSONはすべての開発者が日常的に扱う基本的な技術です。JSON構文をマスターし、一般的なエラーを理解し、フォーマットのベストプラクティスに従い、フォーマット間の変換タイミングを知ることで、より効率的で効果的な開発者になれます。
このガイドの重要なポイントは:使用前に常にJSONを検証する、一貫したフォーマットと命名規則を維持する、各ユースケースに適したフォーマット(JSON、XML、またはYAML)を選択する、そしてオンラインツールを活用して繰り返しのフォーマットや変換タスクの時間を節約することです。
難しいAPIレスポンスをデバッグする場合でも、デプロイメント用の設定ファイルを準備する場合でも、信頼性の高いJSONフォーマッターをツールキットに持つことは計り知れない価値があります。無料のJSONフォーマッターをお試しいただき、適切なツールがもたらす違いをご体験ください。
無料JSONフォーマッターをお試しください
JSONデータを即座にフォーマット、検証、整形。100%クライアントサイド処理 -- データがブラウザから外に出ることはありません。