JSONとは?初心者向けにデータ形式の基本をわかりやすく解説
JSONとは何か、初心者にもわかるように基本構文やデータ型、よく使われる場面をまとめました。Web APIや設定ファイルで欠かせないJSON形式を理解しましょう。

JSONとは
JSON(JavaScript Object Notation)は、データを人間にも機械にも読みやすい形で表現するためのテキストフォーマットです。名前に「JavaScript」と入っていますが、特定のプログラミング言語に依存しない汎用的な形式で、Python、Java、Go、PHP など主要な言語のほぼすべてで扱えます。
もともとは JavaScript のオブジェクトリテラル記法をベースにして生まれました。2000年代前半に Douglas Crockford が仕様を整理し、その後 RFC 8259 として標準化されています。XML と比べて記述量が少なく、パースも高速なことから、Web の世界で急速に普及しました。
JSONの基本構文
JSON で使えるデータ構造は大きく分けて2つあります。
オブジェクト
波括弧 {} で囲み、キーと値のペアをコロンで区切って並べます。キーは必ずダブルクォートで囲んだ文字列です。
{
"name": "田中太郎",
"age": 30,
"city": "東京"
}
配列
角括弧 [] で囲み、値をカンマで区切って並べます。異なる型の値を混在させることもできますが、実務では同じ型で揃えるのが一般的です。
["りんご", "バナナ", "みかん"]
JSONで使えるデータ型
JSON が扱えるデータ型は6種類です。
文字列
ダブルクォートで囲みます。シングルクォートは使えません。改行やタブなどの特殊文字はエスケープシーケンス(\n、\t)で表現します。
"これは文字列です"
数値
整数でも小数でも書けます。クォートで囲む必要はありません。
42
3.14
-10
真偽値
true または false のどちらかです。先頭が大文字の True や、全大文字の TRUE は JSON では無効なので注意してください。
true
null
値が存在しないことを示します。こちらもすべて小文字で書きます。
null
オブジェクトと配列のネスト
オブジェクトの中に配列を入れたり、配列の中にオブジェクトを入れたりと、自由にネストできます。
{
"user": {
"name": "田中太郎",
"hobbies": ["読書", "ランニング"],
"address": {
"prefecture": "東京都",
"city": "渋谷区"
}
}
}
この柔軟なネスト構造が、JSON が複雑なデータを表現できる理由のひとつです。
JSONがよく使われる場面
Web API のデータ交換
REST API や GraphQL のレスポンス形式として、JSON はデファクトスタンダードです。ブラウザの fetch 関数でサーバーからデータを取得すると、ほとんどの場合 JSON で返ってきます。
{
"status": "ok",
"data": {
"id": 1,
"title": "最初の投稿"
}
}
設定ファイル
package.json(Node.js)、tsconfig.json(TypeScript)、VS Code の settings.json など、開発ツールの設定ファイルにも広く使われています。人間が読み書きしやすく、プログラムからもパースしやすいという両方の要件を満たしているためです。
データの保存・ログ
NoSQL データベース(MongoDB など)では、データを JSON に近い形式(BSON)で保存しています。ログの構造化にも JSON Lines(1行1JSONオブジェクト)が使われることが増えています。
JSONを扱うときに覚えておきたいこと
JSON はシンプルな形式ですが、いくつか注意点があります。コメントが書けない、末尾のカンマが許可されていない、キーは必ずダブルクォートで囲む必要がある、といった制約です。
フォーマットが崩れた JSON は読みにくく、構文エラーの原因にもなります。JSON Formatter を使えば、ワンクリックで整形・検証ができるので、作業効率が上がります。
JSON の具体的な書き方のルールについては JSONの書き方ガイド で詳しく解説しています。また、YAML との違いが気になる方は YAMLとJSONの違い を参考にしてください。JSON を見やすく整形するコツは JSON整形の基本 にまとめています。
まとめ
- JSON は言語非依存の軽量データ交換フォーマット
- オブジェクト(
{})と配列([])の2つの構造が基本 - データ型は文字列・数値・真偽値・null・オブジェクト・配列の6種類
- Web API のレスポンスや設定ファイルで広く利用されている
- コメントが書けない、末尾カンマ不可などの制約がある
- 整形や構文チェックには JSON Formatter が便利