JSON

JavaScript 由来の軽量なデータ交換フォーマットで、Web API のデファクトスタンダード

データ形式Web
JSON」の技術書を見る (27 冊) →

JSON とは

JSON (JavaScript Object Notation) は、Douglas Crockford が 2001 年に標準化した軽量なデータ交換フォーマットである。人間にも機械にも読みやすく、ほぼすべてのプログラミング言語でパーサーが提供されている。Web API のレスポンス形式として事実上の標準だ。

データ型

データ型の例を示す。

{
  "string": "Hello",
  "number": 42,
  "float": 3.14,
  "boolean": true,
  "null": null,
  "array": [1, 2, 3],
  "object": { "key": "value" }
}
注意点
文字列"hello"ダブルクォートのみ (シングル不可)
数値42, 3.14Infinity, NaN は不可
真偽値true, false
nullnullundefined は不可
配列[1, 2, 3]
オブジェクト{"key": "value"}キーは文字列のみ

JSON にないもの

  • コメント (//, /* */)
  • 末尾カンマ ([1, 2, 3,])
  • undefined, Infinity, NaN
  • 日付型 (文字列として "2026-04-01T00:00:00Z" で表現)
  • BigInt

TypeScript での操作

TypeScript での操作のコード例を示す。

// シリアライズ
const json = JSON.stringify({ name: 'Alice', age: 30 });
// '{"name":"Alice","age":30}'

// デシリアライズ (戻り値は any → 型検証が必要)
const data = JSON.parse(json); // any 型

// ✅ Zod でバリデーション + 型推論
import { z } from 'zod';
const UserSchema = z.object({ name: z.string(), age: z.number() });
const user = UserSchema.parse(JSON.parse(json)); // { name: string; age: number }

JSON vs 他のフォーマット

JSON と他のフォーマットの違いを以下にまとめる。

フォーマット用途コメント型の厳密さ
JSONAPI、データ交換不可中程度
YAML設定ファイル、CI/CD可能曖昧
TOML設定ファイル可能厳密
Protocol Buffersマイクロサービス間通信-厳密 (スキーマ必須)

DynamoDB と JSON

DynamoDB のアイテムは JSON に似た構造だが、型情報が付与される。

// DynamoDB のアイテム (マーシャリング形式)
{ "userId": { "S": "123" }, "age": { "N": "30" }, "tags": { "L": [{ "S": "admin" }] } }

// AWS SDK v3 のマーシャリングで通常の JSON として扱える
{ "userId": "123", "age": 30, "tags": ["admin"] }

JSON Lines (JSONL)

1 行に 1 つの JSON オブジェクトを記述する形式。ログファイルやストリーミング処理で使われる。

{"timestamp":"2026-04-01T10:00:00Z","level":"INFO","message":"Request received"}
{"timestamp":"2026-04-01T10:00:01Z","level":"ERROR","message":"DB connection failed"}

Athena で S3 上の JSONL ファイルを直接クエリできる。

JSON の理解を深めるには関連書籍が参考になる。

この記事は役に立ちましたか?

関連用語

関連する記事