1
0

JSONの型について

Last updated at Posted at 2024-09-06

アジェンダ

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データに対して厳密な型定義を行うことができ、より安全で保守性の高いコードを書くことができます。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0