JSON とは?定義と基礎知識
JSON の定義、歴史、構造を学びます。初心者向けの完全ガイド、データタイプ、シンタックスルール、実用例。
Big JSON Team
• Technical WriterExpert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.
# JSON とは?定義と基礎知識
JSON(JavaScript Object Notation)は、最も人気があり、広く使われているデータ交換形式です。このガイドは、JSON の基礎知識をゼロから学ぶあなたのための完全なリソースです。
JSON の定義
JSON は人間が読みやすく、コンピューターも簡単に解析できる軽量のデータ交換形式です。
主な特徴
- 軽量 - XML より小さい
- テキストベース - あらゆるプログラムで読取可能
- 言語独立 - すべてのプログラミング言語で使用可能
- 構造化 - キーと値のペア
- 標準化 - RFC 7158 で定義
JSON の歴史
タイムライン
- 2001年 - Douglas Crockford により提案
- 2006年 - YAML が競合として登場
- 2013年 - RFC 7158 として標準化
- 2017年 - RFC 8259 として更新
- 2020年代 - Web、API、モバイルの最終フォーマットへ
なぜ JSON が選ばれたのか
JSON の構文
JSON は複雑ではありません。いくつかの基本的なルールがあります:
ルール 1:キーは常にダブルクォートで囲む
{
"name": "田中太郎",
"age": 30
}
❌ これはダメ:
{
name: "田中太郎"
}
ルール 2:文字列値はダブルクォートで囲む
{
"city": "東京",
"country": "日本"
}
ルール 3:数値はクォートなし
{
"age": 30,
"score": 95.5,
"year": -100
}
ルール 4:カンマは各要素を区切る
{
"first": "太郎",
"last": "田中",
"age": 30
}
最後の要素の後にはカンマを付けない!
ルール 5:末尾にカンマを付けない
❌ エラー:
{
"name": "田中",
"age": 30,
}
✅ 正しい:
{
"name": "田中",
"age": 30
}
JSON のデータタイプ
JSON は 6 つの基本データタイプをサポートします:
1. 文字列(String)
{
"name": "田中太郎",
"message": "こんにちは"
}
2. 数値(Number)
{
"age": 30,
"score": 98.5,
"temperature": -5,
"scientific": 1.23e4
}
3. ブーリアン(Boolean)
{
"active": true,
"deleted": false,
"isAdmin": true
}
4. Null
{
"middleName": null,
"phone": null,
"email": "user@example.com"
}
5. 配列(Array)
{
"colors": ["赤", "青", "緑"],
"numbers": [1, 2, 3, 4, 5],
"mixed": [1, "文字", true, null],
"nested": [[1, 2], [3, 4]]
}
6. オブジェクト(Object)
{
"person": {
"name": "田中太郎",
"age": 30,
"address": {
"city": "東京",
"zipcode": "100-0001"
}
}
}
実践的な例
シンプルなユーザープロフィール
{
"id": 1,
"name": "田中太郎",
"email": "tanaka@example.com",
"age": 30,
"active": true,
"roles": ["user", "admin"]
}
API レスポンス
{
"status": "success",
"data": {
"users": [
{
"id": 1,
"name": "田中太郎",
"email": "tanaka@example.com"
},
{
"id": 2,
"name": "佐藤花子",
"email": "sato@example.com"
}
]
},
"timestamp": "2026-01-16T10:30:00Z",
"count": 2
}
設定ファイル
{
"app": {
"name": "マイアプリケーション",
"version": "1.0.0"
},
"server": {
"host": "localhost",
"port": 3000,
"ssl": true
},
"database": {
"url": "postgresql://localhost/mydb",
"poolSize": 10
},
"logging": {
"level": "info",
"format": "json"
}
}
JSON の利点
1. シンプル(わかりやすい)
XML と比較すると:
XML:<user>
<name>田中太郎</name>
<age>30</age>
</user>
JSON:
{
"name": "田中太郎",
"age": 30
}
2. 軽量(小さいファイルサイズ)
JSON は XML より約 50% 小さくなります。
3. 高速パース
ほぼすべての言語で高速に解析できます。
4. ネストのサポート
複雑なデータ構造を簡単に表現できます。
5. コメント不可(機能)
JSON にはコメントがありませんが、これにより構造が厳密になります。
JSON の制限事項
1. コメントなし
{
// これはコメント(JSON では不可)
"name": "田中"
}
解決方法: JSON5 を使用するか、ドキュメントを別ファイルに入れる。
2. 関数を表現できない
JSON はデータのみを表現します。関数は保持できません。
3. 循環参照をサポートしない
{
"user": {
"name": "田中",
"parent": { / 同じオブジェクトを参照?/}
}
}
4. 日付型がない
日付は文字列として保存する必要があります:
{
"createdAt": "2026-01-16",
"createdAtIso": "2026-01-16T10:30:00Z",
"timestamp": 1674129000
}
5. undefined がない
JavaScript の undefined は JSON にはありません。null を使用します。
プログラミング言語での JSON
JavaScript
const data = JSON.parse(jsonString);
const jsonString = JSON.stringify(data);
Python
import json
data = json.loads(json_string)
json_string = json.dumps(data)
Java
JSONObject obj = new JSONObject(jsonString);
String jsonString = obj.toString();
C#
var data = JsonConvert.DeserializeObject(json);
string json = JsonConvert.SerializeObject(data);
実世界での使用例
1. Web API
ほぼすべての REST API は JSON を使用します:
GET /api/users/1
Response:
{
"id": 1,
"name": "田中太郎"
}
2. データベース
MongoDB などの NoSQL データベースは JSON を使用します。
3. 設定ファイル
package.json、tsconfig.json など。
4. モバイルアプリ
iOS、Android アプリは JSON API と通信します。
5. クラウドサービス
AWS、Google Cloud、Azure はすべて JSON を使用します。
ベストプラクティス
1. 一貫性を保つ
{
"userId": 1,
"userName": "田中",
"userAge": 30
}
すべてのキーに同じケーシングを使用(キャメルケース)。
2. 長いキー名を避ける
{
"user": {
"firstName": "太郎",
"lastName": "田中",
"email": "tanaka@example.com"
}
}
3. 意味のあるキー名を使う
❌ 意味不明:
{
"d": "2026-01-16",
"u": "田中"
}
✅ 明確:
{
"date": "2026-01-16",
"user": "田中"
}
4. ネストを最小化
深すぎるネストは避けてください(最大 3-4 レベル)。
5. スキーマで検証
JSON Schema を使用してデータを検証します。
JSON が2026年に重要な理由
次のステップ
JSON の基礎を理解しました。次に学ぶべきことは:
まとめ
JSON は:
- シンプル
- 軽量
- 高速
- 標準化
- 万能
あなたのデータ交換形式として JSON を採用しましょう!