JSON

API | IT用語集

この用語をシェア

JSONとは

JSON(JavaScript Object Notation)は、軽量なデータ交換フォーマットです。人間が読み書きしやすく、機械が解析・生成しやすい形式で、Web APIやデータ保存において広く使用されています。JavaScriptの記法をベースにしていますが、言語に依存しない汎用的なデータフォーマットです。

JSONの特徴

  • 軽量:XMLと比較して記述が簡潔
  • 可読性:人間が理解しやすい構造
  • 言語非依存:ほとんどの言語でサポート
  • 標準化:RFC 7159として標準化
  • シンプル:構文が簡単で理解しやすい

JSONの構文

基本的なデータ型

データ型 説明
文字列 "Hello World" ダブルクォートで囲まれた文字列
数値 123, 45.67 整数・浮動小数点数
論理値 true, false 真偽値
null null null値
オブジェクト {"key": "value"} キー・バリューペア
配列 [1, 2, 3] 値の順序付きリスト

基本的なJSONの例

{
  "name": "田中太郎",
  "age": 30,
  "isActive": true,
  "address": {
    "city": "東京",
    "zipcode": "100-0001"
  },
  "hobbies": ["読書", "映画鑑賞", "プログラミング"],
  "spouse": null
}

JSONの構文ルール

  • 文字列:必ずダブルクォートで囲む
  • キー:必ず文字列で、ダブルクォートで囲む
  • :文字列、数値、論理値、null、オブジェクト、配列のいずれか
  • セパレータ:要素間はカンマで区切る
  • 末尾のカンマ:最後の要素の後にカンマは付けない
  • コメント:コメントは使用できない

JSONの使用例

Web APIのレスポンス

// GET /api/users/123 のレスポンス
{
  "id": 123,
  "name": "田中太郎",
  "email": "tanaka@example.com",
  "created_at": "2025-01-01T00:00:00Z",
  "profile": {
    "bio": "Webデベロッパー",
    "skills": ["JavaScript", "Python", "Docker"],
    "experience": 5
  }
}

設定ファイル

// package.json
{
  "name": "my-app",
  "version": "1.0.0",
  "description": "My awesome application",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "test": "jest"
  },
  "dependencies": {
    "express": "^4.18.0",
    "lodash": "^4.17.21"
  },
  "devDependencies": {
    "jest": "^29.0.0"
  }
}

プログラミング言語でのJSON操作

JavaScript

// JSON文字列をオブジェクトに変換
const jsonString = '{"name": "田中太郎", "age": 30}';
const obj = JSON.parse(jsonString);
console.log(obj.name); // "田中太郎"

// オブジェクトをJSON文字列に変換
const user = { name: "田中太郎", age: 30 };
const json = JSON.stringify(user);
console.log(json); // '{"name":"田中太郎","age":30}'

// 美しく整形
const prettyJson = JSON.stringify(user, null, 2);
/*
{
  "name": "田中太郎",
  "age": 30
}
*/

Python

import json

# JSON文字列を辞書に変換
json_string = '{"name": "田中太郎", "age": 30}'
data = json.loads(json_string)
print(data["name"])  # "田中太郎"

# 辞書をJSON文字列に変換
user = {"name": "田中太郎", "age": 30}
json_string = json.dumps(user, ensure_ascii=False)
print(json_string)  # '{"name": "田中太郎", "age": 30}'

# 美しく整形
pretty_json = json.dumps(user, ensure_ascii=False, indent=2)
print(pretty_json)

Java

import com.fasterxml.jackson.databind.ObjectMapper;

// JSON文字列をオブジェクトに変換
String jsonString = "{\"name\": \"田中太郎\", \"age\": 30}";
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(jsonString, User.class);
System.out.println(user.getName()); // "田中太郎"

// オブジェクトをJSON文字列に変換
User newUser = new User("田中太郎", 30);
String json = mapper.writeValueAsString(newUser);
System.out.println(json);

JSONの検証

JSON Schema

JSON Schemaは、JSONデータの構造を定義・検証するためのスキーマ言語です。

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

JSONの利点

  • シンプル:構文が簡潔で理解しやすい
  • 軽量:XMLと比較してデータサイズが小さい
  • 高速:パース速度が速い
  • 広範囲サポート:ほとんどの言語でサポート
  • ネイティブサポート:JavaScriptで直接扱える

JSONの制限

  • データ型の制限:日付、関数、コメントは直接サポートされない
  • 循環参照:オブジェクトの循環参照は表現できない
  • 精度の問題:浮動小数点数の精度に制限がある
  • セキュリティ:直接eval()すると危険

JSONとXMLの比較

特徴 JSON XML
可読性 高い 中程度
データサイズ 小さい 大きい
パース速度 速い 遅い
スキーマ JSON Schema XML Schema
メタデータ 制限あり 豊富
名前空間 なし あり

JSONの活用場面

  • Web API:RESTful APIのデータ交換
  • 設定ファイル:アプリケーションの設定
  • データベース:NoSQLデータベースでのデータ保存
  • ログ:構造化ログのフォーマット
  • Ajax通信:Webアプリケーションでのデータ交換

JSONのベストプラクティス

  • 命名規則:camelCase または snake_case を統一
  • 一貫性:同じ構造のデータは同じ形式で統一
  • 検証:JSON Schemaを使用した検証
  • エラーハンドリング:パース時のエラー処理
  • セキュリティ:信頼できないJSONの適切な処理

関連技術

  • JSONP:クロスドメインでのJSON取得
  • JSON-LD:Linked Data向けのJSON
  • BSON:Binary JSON(MongoDB等で使用)
  • MessagePack:効率的なバイナリシリアライゼーション
  • YAML:人間が読みやすい設定ファイル形式

JSONツール

  • JSONLint:JSON検証ツール
  • jq:コマンドラインJSON processor
  • Postman:API開発・テストツール
  • JSON Schema Validator:スキーマ検証ツール

関連Webサイト

この用語についてもっと詳しく

JSONに関するご質問や、システム導入のご相談など、お気軽にお問い合わせください。

カテゴリ

API IT用語集