JSON
別名: JavaScript Object Notation, ジェイソン
JSONとは、データをやり取りするための書き方のルール(フォーマット) です。
人間にも読みやすく、プログラムでも扱いやすいため、現在のソフトウェア開発における デファクトスタンダード(事実上の標準) となっているデータ形式です。
なぜJSONが必要なのか
たとえば、天気予報アプリを作るとします。
サーバーから「東京の天気は晴れ、気温は25度」という情報を受け取りたいとき、
この情報をどんな形で送ればいいでしょうか?
普通の文章で送ると、プログラムが内容を正しく読み取るのが難しくなります。
そこで、決まったルールに沿った書き方でデータを送る必要があります。それがJSONです。
{
"city": "東京",
"weather": "晴れ",
"temperature": 25
}このように書けば、人間が見ても内容がわかるし、プログラムも正確にデータを取り出せます。
JSONの基本ルール
JSONにはいくつかのルールがあります。
| ルール | 内容 |
|---|---|
| キーは文字列 | キー(名前)は必ずダブルクォーテーション("")で囲む |
| 値のデータ型 | 文字列・数値・真偽値(true/false)・null・配列・オブジェクトが使える |
| 文字列はダブルクォーテーション | シングルクォーテーション('')は使えない |
| 末尾のカンマ禁止 | 最後の要素の後ろにカンマ(,)を付けるとエラーになる |
| コメントは書けない | // や /* */ でコメントを入れることはできない |
JSONで使えるデータ型
{
"name": "田中太郎",
"age": 30,
"isStudent": false,
"address": null,
"hobbies": ["読書", "プログラミング", "散歩"],
"scores": {
"math": 85,
"english": 92
}
}"name"→ 文字列(ダブルクォーテーションで囲む)"age"→ 数値(クォーテーション不要)"isStudent"→ 真偽値(trueまたはfalse)"address"→ null(値がないことを示す)"hobbies"→ 配列([]で囲んだリスト)"scores"→ オブジェクト({}で囲んだ入れ子構造)
身近なサイトでの利用例
JSONは日常的に使われています。
| 場面 | 利用例 |
|---|---|
| Web API | 天気・ニュース・SNSなど、ほぼすべてのAPIがJSON形式でデータを返す |
| 設定ファイル | package.json(Node.js)、tsconfig.json(TypeScript)などの設定 |
| データ保存 | ローカルストレージに保存するデータもJSON形式に変換して保存する |
| 通信 | フロントエンドとバックエンド間の通信や、バックエンドのサービス同士のデータ送受信 |
たとえば、ブラウザで F12 を押して開発者ツールの「Network」タブを見ると、
Webサイトがサーバーとやり取りしているJSONデータを確認できます。
JavaScriptのオブジェクトとの違い
JSONはJavaScriptのオブジェクト記法をもとに作られましたが、いくつかの違いがあります。
| 項目 | JavaScript オブジェクト | JSON |
|---|---|---|
| キーのクォーテーション | 省略できる | 必ずダブルクォーテーションが必要 |
| 末尾のカンマ | 許可されている | 禁止 |
| コメント | 書ける | 書けない |
| 関数 | 値に設定できる | 設定できない |
| 用途 | プログラム内部のデータ構造 | データの保存・通信用フォーマット |
// JavaScriptオブジェクト(プログラム内で使う)
const user = {
name: "田中", // キーにクォーテーション不要
age: 30, // 末尾カンマもOK
};
// JSON(データ通信や保存に使う)
// {"name": "田中", "age": 30}JSONは「JavaScriptで生まれた記法」ですが、今ではPython・Java・Ruby・PHPなど、 たくさんのプログラミング言語で利用できます。JavaScript専用のものではありません。
かつて主流だったXMLに代わり、現在では多くのWeb API等がJSONを採用しています。
まとめ
- ✓JSONはデータをやり取りするための書き方のルール(フォーマット)
- ✓Web APIや設定ファイルなど、ソフトウェア開発のあらゆる場面で使われている
- ✓JavaScriptのオブジェクトに似ているが、より厳格なルールがある