アジェンダ
JSON(JavaScript Object Notation)は、データをシンプルで読みやすい形式で表現するためのフォーマットです。ウェブアプリケーションやAPI間でデータをやり取りする際によく使われます。
ここでは、JSONで使用できるデータ型について簡単にまとめます。
JSONの基本構造
JSONのデータは、以下の2つの構造を基本としており、データ型は6つあります。
-
オブジェクト:
{}
で囲まれたキーと値のペアの集合。キーは文字列、値は任意の型です。 -
配列:
[]
で囲まれたデータのリスト。値は任意の型です。
例:
{
"name": "John",
"age": 30,
"isStudent": false,
"courses": ["Math", "Science"],
"address": {
"city": "New York",
"zip": "10001"
}
}
JSONで使用できるデータ型
JSONで扱えるデータ型は、JavaScriptに基づいています。6つのデータ型を紹介します。
文字列 (String)
文字列は、ダブルクォーテーション ("
) で囲まれたテキストです。JSONでは、キーや値として文字列を使用できます。
例:
{
"message": "Hello, World!"
}
注意点: 文字列にはシングルクォーテーションは使用できません。
数値 (Number)
数値は整数や小数の形で表現されます。JSONでは、整数 (42
) や浮動小数点数 (3.14
) を使用できます。
例:
{
"age": 25,
"height": 1.75
}
注意点: JSONではNaNやInfinityなどの特別な値はサポートされていません。
真偽値 (Boolean)
真偽値は、true
または false
で表現されます。条件やフラグなどに使用します。
例:
{
"isAdmin": true,
"isVerified": false
}
配列 (Array)
配列は、複数の値をリストとして扱う際に使用します。配列内の値は、文字列や数値など任意の型を持つことができます。
例:
{
"colors": ["red", "green", "blue"],
"scores": [90, 85, 78]
}
注意点: 配列内の型は混在させても構いませんが、意味のある使い方を心がけるべきです。
オブジェクト (Object)
オブジェクトは、キーと値のペアの集合です。キーは必ず文字列で、値は任意の型を取ります。オブジェクトを使うと、関連するデータをまとめて扱うことができます。
例:
{
"user": {
"name": "Alice",
"email": "alice@example.com"
}
}
null
null
は、空または不明な値を示すために使用します。未定義の値や、意図的に値がないことを表すのに便利です。
例:
{
"middleName": null
}
JSONで使用できないデータ型
JSONは柔軟で多くのデータ型を扱えますが、JavaScriptのすべての型をサポートしているわけではありません。特定のデータ型はJSONの形式に適さないため、注意が必要です。
関数 (Function)
JSONでは、関数を値として使用することはできません。JavaScriptオブジェクト内では関数を持つことができますが、JSONに変換する際には無視されます。
例:
const obj = {
name: "John",
greet: function() {
return "Hello!";
}
};
const json = JSON.stringify(obj); // {"name":"John"} (関数は含まれない)
日付 (Date)
日付オブジェクトは、JSONの形式には対応していません。JSON.stringify()
を使用して日付をJSONに変換すると、日付は自動的に文字列としてシリアライズされます。
例:
const obj = {
date: new Date()
};
const json = JSON.stringify(obj); // {"date":"2024-09-06T10:00:00.000Z"} (ISO 8601形式の文字列に変換)
日付を扱う場合、事前に適切な形式に変換する必要があります。
undefined
JSONは undefined
を値として扱いません。オブジェクト内に undefined
を含むプロパティがあった場合、それは JSON.stringify()
で無視されます。
例:
const obj = {
name: "John",
age: undefined
};
const json = JSON.stringify(obj); // {"name":"John"} (undefinedは無視される)
もし null
のように意図的に「値が存在しない」ことを表したい場合は、null
を使う必要があります。
JSONの型制約と注意点
- キーの型: JSONオブジェクトのキーは、常に文字列でなければなりません。
- コメントの禁止: JSONでは、JavaScriptとは異なり、コメントを書くことが許可されていません。
- データ型の一致: 値が適切な型かどうかを確認することが重要です。例えば、APIで送信するデータが予期せぬ型の場合、エラーが発生することがあります。
JSONとTypeScriptでの型定義
TypeScriptでは、JSONの型を厳密に定義できます。たとえば、次のようにJSONオブジェクトの型を定義することができます。
type User = {
name: string;
age: number;
isStudent: boolean;
courses: string[];
address: {
city: string;
zip: string;
};
};
const user: User = {
name: "John",
age: 30,
isStudent: false,
courses: ["Math", "Science"],
address: {
city: "New York",
zip: "10001"
}
};
これにより、JSONの構造と型を厳密に管理でき、予期せぬエラーを防ぐことができます。
まとめ
JSONは、シンプルかつ柔軟なデータ形式であり、さまざまな用途で使用されます。文字列、数値、真偽値、配列、オブジェクト、nullの6つの基本型を理解することで、データを効果的に扱えるようになります。また、TypeScriptを活用することで、JSONデータに対して厳密な型定義を行うことができ、より安全で保守性の高いコードを書くことができます。