1. はじめに
Pythonでデータを扱う際、JSON形式のファイル・文字列の読み込み書き込みは非常に重要なスキルです。JSON(JavaScript Object Notation)は軽量なデータフォーマットで、Web APIの通信や設定ファイルなどで広く使われています。
本記事では、Pythonの標準ライブラリ json
モジュールを使って、JSON形式のファイルや文字列を読み書きする方法について、基礎から実践的な応用まで丁寧に解説します。初心者の方でも理解しやすいよう、具体的なコード例と実行結果を掲載しています。
2. PythonでJSONを扱う基本
2-1. JSONとは?
JSONは、キーと値のペアで構成されるデータ構造で、Pythonの辞書(dict
)やリスト(list
)に非常に似ています。例えば以下のような形式です。
{
"name": "Taro",
"age": 25,
"skills": ["Python", "JavaScript"]
}
2-2. jsonモジュールの基本関数
Pythonでは標準ライブラリのjson
モジュールを使って、JSON形式のデータを簡単に扱うことができます。代表的な関数は以下の通りです。
json.load()
:ファイルからJSONを読み込むjson.dump()
:ファイルにJSONを書き込むjson.loads()
:文字列からJSONを読み込むjson.dumps()
:Pythonオブジェクトを文字列に変換する
2-3. JSON文字列を読み込む(loads)
import json
# JSON文字列
json_str = '{"name": "Taro", "age": 25}'
# Pythonの辞書に変換
data = json.loads(json_str)
print(data)
実行結果:
{'name': 'Taro', 'age': 25}
2-4. PythonオブジェクトをJSON文字列に変換(dumps)
# 辞書オブジェクト
data = {"name": "Taro", "age": 25}
# JSON文字列に変換
json_str = json.dumps(data, indent=2)
print(json_str)
実行結果:
{
"name": "Taro",
"age": 25
}
3. よくある使い方・応用例
3-1. JSONファイルを読み込む(load)
ファイルから直接JSONデータを読み込む例です。
import json
# sample.jsonファイルから読み込む
with open('sample.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data)
実行結果:
{'name': 'Taro', 'age': 25}
3-2. JSONファイルに書き込む(dump)
data = {"name": "Hanako", "age": 30}
# sample_out.jsonに保存
with open('sample_out.json', 'w', encoding='utf-8') as f:
json.dump(data, f, indent=2, ensure_ascii=False)
ensure_ascii=False
を指定することで、日本語も文字化けせずに保存できます。
3-3. APIレスポンスの加工や保存
外部APIから受け取ったJSONをPythonで加工し、ファイルに保存する例です。
import json
import requests
response = requests.get('https://jsonplaceholder.typicode.com/users')
users = response.json()
# ユーザー名だけ抽出
usernames = [user["username"] for user in users]
# JSONファイルに保存
with open('usernames.json', 'w', encoding='utf-8') as f:
json.dump(usernames, f, indent=2)
実行結果:
[
"Bret",
"Antonette",
"Samantha",
...
]
4. 注意点・エラー対策
4-1. JSONDecodeErrorが出る場合
JSONデータの形式が不正な場合、json.loads()
やjson.load()
でJSONDecodeError
が発生します。よくある原因は以下の通りです。
- シングルクォート(
'
)を使っている - 末尾のカンマ
- 全体が文字列で囲まれていない
エラー時には try-except
で囲むのが安全です。
import json
invalid_json = "{'name': 'Taro'}" # シングルクォートはNG
try:
data = json.loads(invalid_json)
except json.JSONDecodeError as e:
print("エラー:", e)
4-2. ファイルの文字化け
日本語を含むJSONファイルを扱うときは、エンコーディングに注意が必要です。読み書き時はencoding='utf-8'
を必ず指定しましょう。
5. まとめ
今回は、PythonでJSON形式のファイル・文字列の読み込み書き込みを行う方法について解説しました。ポイントを振り返りましょう。
json.loads()
とjson.dumps()
は文字列の変換json.load()
とjson.dump()
はファイル操作に使用- 日本語対応には
ensure_ascii=False
を活用 - JSON形式の正しさを意識し、エラー対策も行う
実務では、設定ファイルの管理、API連携、ログ出力など、多くの場面でJSONが使われます。初心者のうちからしっかりと使い方を身につけておきましょう。
学習のコツ:実際に小さなJSONファイルを自分で作って、読み書きのコードを手を動かして試すことで、理解が深まります!