WebのAPIを叩いたときのレスポンスや、npmプロジェクトのpackage.jsonを開いたとき、こんな形式のデータを目にしたことがあるはずです。

{
  "name": "田中太郎",
  "age": 28,
  "skills": ["JavaScript", "Python"],
  "active": true
}

これがJSONです。初めて見ると「何これ?」となりますが、構造を理解すると「なるほど、読みやすいな」と感じるはずです。この記事では、JSONの基本的な仕組みから実際の使い方まで、順を追って解説します。

JSONとは?

JSON(ジェイソン)は JavaScript Object Notation の略で、テキストベースのデータ交換フォーマットです。名前にJavaScriptとありますが、特定の言語に依存しておらず、Python・Ruby・Java・PHPなどほぼすべての言語で読み書きできます。

データを表現する構造は2種類だけです。

  • オブジェクト{ } で囲む。キーと値のペアの集まり
  • 配列[ ] で囲む。値を順番に並べたリスト

この2つを組み合わせるだけで、どんなデータ構造でも表現できます。

JSONの仕組みと使えるデータ型

JSONで使えるデータ型は6種類に限定されています。

  • 文字列(string):ダブルクォートで囲む。例:"田中太郎"
  • 数値(number):整数・小数どちらも可。例:283.14
  • 真偽値(boolean)true または false(小文字のみ)
  • null:値がないことを示す。例:null
  • オブジェクト(object){ "key": value } の形
  • 配列(array)[ 値1, 値2 ] の形

オブジェクトの中にオブジェクトを入れたり(ネスト)、配列の中にオブジェクトを入れたりと、自由に組み合わせることができます。

{
  "user": {
    "name": "田中太郎",
    "address": {
      "city": "東京",
      "zip": "100-0001"
    }
  },
  "tags": ["admin", "editor"]
}

注意点として、JSONにはコメントを書く文法がありません。また、最後の要素にカンマを付ける「末尾カンマ」もエラーになります。

JSONの実際の使い方

Web API(fetch)でのレスポンス受け取り

現代のWeb APIはほぼJSONでデータを返します。JavaScriptでは fetch().json() メソッドで簡単に扱えます。

const res = await fetch('https://api.example.com/users/1');
const data = await res.json();
console.log(data.name); // "田中太郎"

設定ファイル(package.json)

Node.jsプロジェクトの package.json もJSONです。プロジェクト名・バージョン・依存パッケージなどを定義しています。

{
  "name": "my-app",
  "version": "1.0.0",
  "dependencies": {
    "react": "^18.0.0"
  }
}

データベースへの保存

PostgreSQLやMySQLにはJSON型のカラムがあり、柔軟な構造のデータをそのまま保存できます。MongoDBのようなNoSQLデータベースでも、データはJSONに近い形式で扱われます。

よくある質問(FAQ)

JSONとXMLの違いは何ですか?
XMLはタグで囲む形式(<name>田中</name>)で記述量が多く、人間には読みにくいことがあります。JSONは構造がシンプルで記述量が少なく、JavaScriptとの相性も良いため、現在のWeb APIではJSONが主流です。
JSONにコメントを書けないのはなぜですか?
JSONの仕様を定めたRFC 8259でコメントが明示的に除外されているためです。JSONは「データ交換フォーマット」として設計されており、シンプルさを優先した結果コメントが省かれました。設定ファイルにコメントを書きたい場合は、JSON5やYAMLの利用を検討してください。
JSONで日本語は使えますか?
使えます。JSONはUTF-8エンコードを標準としており、日本語・中国語・絵文字なども文字列として扱えます。ただし、APIによっては日本語をUnicodeエスケープ(\u3000 形式)で返すこともあります。

まとめ

  • JSONはテキストベースのデータ交換フォーマットで、言語を問わず幅広く使われている
  • 構造は「オブジェクト({})」と「配列([])」の2種類だけ
  • 使えるデータ型は string / number / boolean / null / object / array の6種類
  • コメントや末尾カンマは書けない
  • Web API・設定ファイル・データベースなど、あらゆる場面で登場する

JSONのデータを整形して見やすくしたり、逆にファイルサイズを圧縮したりするには以下のツールが役立ちます。