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):整数・小数どちらも可。例:
28、3.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のデータを整形して見やすくしたり、逆にファイルサイズを圧縮したりするには以下のツールが役立ちます。
- JSONフォーマッター:JSONを見やすく整形・バリデーション
- JSONミニファイア:JSONを圧縮してサイズを削減
- JSON→YAML変換:設定ファイルをYAML形式に変換