エラノート エラノート

JSONとは?データ形式の基本と読み書きを解説

JSON データ形式 JavaScript Python 入門
広告スペース (article-top)

JSONは「JavaScript Object Notation」の略で、データをテキストで表現するための形式です。Webアプリケーションの通信やファイルの設定など、さまざまな場面で使われています。この記事では、JSONの基本的な書き方から、プログラムでの読み書き方法まで解説します。

JSONとは何か

JSONは、データを人間にも読みやすく、コンピュータにも処理しやすいテキスト形式で表現するための記法です。もともとはJavaScriptのオブジェクト表記をベースに作られましたが、現在ではほぼすべてのプログラミング言語で利用できます。

JSONが使われる場面

JSONは次のような場面で広く使われています。

  • WebサーバーとブラウザのAPI通信
  • 設定ファイル(package.json、tsconfig.jsonなど)
  • データの保存や受け渡し
  • 外部サービスとの連携

なぜJSONが普及したのか

JSON以前は、XMLという形式が主流でした。しかしXMLはタグが多く、データ量に対して記述量が増えがちです。JSONはよりシンプルに書けるため、特にWeb開発の分野で急速に普及しました。

たとえば、同じ「ユーザー情報」を表すとき、XMLとJSONでは次のような違いがあります。

<!-- XML -->
<user>
  <name>田中太郎</name>
  <age>25</age>
</user>
{
  "name": "田中太郎",
  "age": 25
}

JSONのほうがシンプルで読みやすいことがわかります。

JSONの書き方

JSONにはいくつかの基本ルールがあります。これらを押さえれば、正しいJSONを書けるようになります。

基本的なデータ型

JSONで使えるデータ型は6種類です。

  • 文字列: ダブルクォーテーションで囲む("こんにちは"
  • 数値: そのまま書く(423.14
  • 真偽値: true または false
  • null: 値がないことを表す(null
  • 配列: 角括弧で囲む([1, 2, 3]
  • オブジェクト: 波括弧で囲む({"key": "value"}

オブジェクトの書き方

JSONの最も基本的な形は「キーと値のペア」をまとめたオブジェクトです。

{
  "name": "佐藤花子",
  "age": 30,
  "isStudent": false,
  "email": "[email protected]"
}

キーは必ずダブルクォーテーションで囲みます。シングルクォーテーションは使えません。これはJavaScriptのオブジェクトとの大きな違いです。

配列の書き方

複数のデータをまとめるには配列を使います。

{
  "fruits": ["りんご", "みかん", "ぶどう"],
  "scores": [85, 92, 78]
}

ネスト(入れ子)構造

オブジェクトや配列は入れ子にできます。実際のデータは、たいていこのようなネスト構造になっています。

{
  "user": {
    "name": "田中太郎",
    "address": {
      "city": "東京都",
      "zip": "100-0001"
    },
    "hobbies": ["読書", "プログラミング", "映画鑑賞"]
  }
}

JSONを書くときの注意点

JSONは厳密なフォーマットです。ちょっとしたミスでエラーになるため、注意が必要です。

よくある間違い

初心者がやりがちなミスをまとめます。

// NG: 末尾のカンマ(トレイリングカンマ)
{
  "name": "太郎",
  "age": 25,
}
// NG: シングルクォーテーション
{
  'name': '太郎'
}
// NG: コメント
{
  "name": "太郎"  // これはコメントです
}

JSONではコメントが書けないことに注意してください。設定ファイルなどでコメントが必要な場合は、JSON5やJSONCといった拡張形式が使われることがあります。

JSONの検証方法

手書きしたJSONが正しいかどうか不安なときは、プログラムで検証するのが確実です。

import json

text = '{"name": "太郎", "age": 25}'

try:
    data = json.loads(text)
    print("有効なJSONです")
except json.JSONDecodeError as e:
    print(f"JSONが不正です: {e}")

JavaScriptでのJSON操作

JavaScriptにはJSONを扱うための組み込みメソッドが用意されています。

JSON文字列をオブジェクトに変換(パース)

const jsonText = '{"name": "田中太郎", "age": 25}';

// JSON文字列 → JavaScriptオブジェクト
const user = JSON.parse(jsonText);

console.log(user.name); // "田中太郎"
console.log(user.age);  // 25

オブジェクトをJSON文字列に変換

const user = {
  name: "佐藤花子",
  age: 30,
  hobbies: ["読書", "旅行"]
};

// JavaScriptオブジェクト → JSON文字列
const jsonText = JSON.stringify(user);
console.log(jsonText);
// {"name":"佐藤花子","age":30,"hobbies":["読書","旅行"]}

// 読みやすくインデント付きで出力
const pretty = JSON.stringify(user, null, 2);
console.log(pretty);

fetch APIでJSONを受け取る

Web開発では、APIからJSONデータを受け取ることが頻繁にあります。

async function getUser() {
  const response = await fetch("https://api.example.com/user/1");
  const data = await response.json(); // レスポンスをJSONとしてパース
  console.log(data.name);
}

response.json() は内部的に JSON.parse() を呼び出しています。

PythonでのJSON操作

Pythonには標準ライブラリの json モジュールが用意されています。

JSON文字列と辞書の変換

import json

# JSON文字列 → Python辞書
json_text = '{"name": "田中太郎", "age": 25}'
data = json.loads(json_text)
print(data["name"])  # 田中太郎

# Python辞書 → JSON文字列
user = {"name": "佐藤花子", "age": 30}
json_text = json.dumps(user, ensure_ascii=False, indent=2)
print(json_text)

ensure_ascii=False を指定しないと、日本語がUnicodeエスケープ(\u7530\u4e2dのような表記)に変換されてしまいます。日本語を含むJSONを扱うときは忘れずに指定しましょう。

JSONファイルの読み書き

import json

# JSONファイルを読み込む
with open("data.json", "r", encoding="utf-8") as f:
    data = json.load(f)

# データを加工
data["updated"] = True

# JSONファイルに書き出す
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

json.loads() / json.dumps() は文字列を扱い、json.load() / json.dump() はファイルを扱います。末尾の s の有無で使い分けてください。

JSONとほかのデータ形式の比較

JSON以外にもデータ形式はあります。用途に応じて使い分けることが大切です。

YAML

name: 田中太郎
age: 25
hobbies:
  - 読書
  - プログラミング

YAMLはインデントで構造を表すため、人間が読み書きしやすい形式です。Docker ComposeやCI/CDの設定ファイルでよく使われます。ただし、インデントの揺れがエラーにつながりやすいという弱点もあります。

CSV

name,age
田中太郎,25
佐藤花子,30

CSVは表形式のデータに適しています。Excelで開けるため、非エンジニアとのデータ共有に便利です。ただし、ネスト構造を表現できません。

使い分けの目安

  • API通信やプログラム間のデータ受け渡し: JSON
  • 設定ファイル(人が編集するもの): YAML
  • 表形式のデータやExcel連携: CSV

まとめ

この記事では、JSONの基本を解説しました。

  • JSONはデータをテキストで表現するための軽量な形式
  • キーと値のペア(オブジェクト)と配列が基本要素
  • JavaScriptでは JSON.parse() / JSON.stringify() で変換する
  • Pythonでは json モジュールの loads() / dumps() で変換する
  • コメントやトレイリングカンマは使えない
  • API通信や設定ファイルなど幅広い場面で活用されている

JSONはWeb開発において避けて通れない基本知識です。まずはブラウザの開発者ツールやPythonのインタラクティブシェルで、実際にJSONの変換を試してみてください。

広告スペース (article-bottom)

あわせて読みたい