PythonでJSONファイルを読み書きする方法!初心者でもわかるjsonモジュールの使い方
生徒
「先生!Pythonでデータを保存したり読み込んだりする方法を知りたいです。テキストファイル以外にも、よく“JSON”って聞くんですけど、あれって何ですか?」
先生
「良い質問だね。JSON(ジェイソン)は“JavaScript Object Notation”の略で、データを整理して保存するための形式なんだ。Pythonでもとてもよく使われるよ。」
生徒
「なるほど!でも、どうやってPythonで扱うんですか?」
先生
「Pythonにはjsonという標準モジュールがあるから、それを使えば簡単にJSONファイルを読み書きできるんだ。実際に見ていこう!」
1. JSONとは?どんなときに使うの?
JSON(ジェイソン)は、データを「人間にも読みやすく、コンピュータにも扱いやすい」形で表現するためのフォーマットです。たとえば、アプリの設定ファイルやWebサービスのデータ通信(API)などで頻繁に使われます。
見た目は辞書(dict)やリスト(list)に似ています。実際にPythonの辞書をJSON形式に変換して保存したり、逆にJSONファイルを読み込んで辞書に戻したりできます。
JSONの基本的な構造は次のようになります。
{
"name": "Taro",
"age": 25,
"hobby": ["music", "travel"]
}
このようにキーと値をセットで管理するため、複数の情報を一つのファイルにまとめられます。
2. PythonでJSONファイルを読み込む(json.load)
Pythonでは、JSONファイルを読み込むときにjson.load()関数を使います。この関数は、ファイルからJSONデータを読み取り、Pythonの辞書型に変換してくれます。
import json
# JSONファイルを読み込む
with open("data.json", "r", encoding="utf-8") as f:
data = json.load(f)
print(data)
print(type(data))
{'name': 'Taro', 'age': 25, 'hobby': ['music', 'travel']}
<class 'dict'>
ポイント:
ファイルを開くときにwith open()構文を使うと、自動でファイルを閉じてくれるので安全です。JSONは文字コードが重要なので、encoding="utf-8"を指定しておくのもおすすめです。
3. PythonのデータをJSONファイルに保存する(json.dump)
今度はPythonの辞書をJSON形式に変換してファイルに書き出してみましょう。これにはjson.dump()関数を使います。
import json
# 保存したいデータ
user = {
"name": "Hanako",
"age": 22,
"hobby": ["reading", "cooking"]
}
# JSONファイルとして保存
with open("user.json", "w", encoding="utf-8") as f:
json.dump(user, f, ensure_ascii=False, indent=4)
print("ファイルを保存しました。")
ファイルを保存しました。
ここでのポイント:
ensure_ascii=False:日本語が文字化けしないように設定。indent=4:インデント(字下げ)をつけて見やすく整形。
保存されたuser.jsonを開くと、次のように整ったJSONファイルができています。
{
"name": "Hanako",
"age": 22,
"hobby": [
"reading",
"cooking"
]
}
4. JSON文字列を直接扱う(json.loads / json.dumps)
ファイルを使わず、Pythonの中でJSON形式の文字列を処理したい場合は、json.loads()とjson.dumps()を使います。
JSON文字列 → Pythonの辞書に変換:
import json
json_str = '{"title": "Python入門", "price": 1800}'
data = json.loads(json_str)
print(data)
print(data["title"])
{'title': 'Python入門', 'price': 1800}
Python入門
Pythonの辞書 → JSON文字列に変換:
book = {"title": "AIの基本", "price": 2500}
json_str = json.dumps(book, ensure_ascii=False, indent=2)
print(json_str)
{
"title": "AIの基本",
"price": 2500
}
このようにloads()とdumps()を使えば、ファイルを介さずにデータを簡単にやり取りできます。
5. JSONを扱うときの注意点
初心者がつまずきやすいポイントも押さえておきましょう。
- コメントは書けない: JSON形式ではコメント(#や//など)が使えません。設定ファイルに説明を入れたい場合は別の方法で。
- データ型の違いに注意: JSONでは、タプルやセットはそのままでは保存できません。必要に応じてリストに変換します。
- 文字化け対策: 常に
ensure_ascii=Falseとencoding="utf-8"をセットで使うと安心です。
6. 実践例:複数データをまとめて保存・読み込み
最後に、実際のアプリでよくある「複数のデータをまとめてJSONで管理する」例を見てみましょう。
import json
users = [
{"id": 1, "name": "Taro"},
{"id": 2, "name": "Hanako"},
{"id": 3, "name": "Ken"}
]
# 保存
with open("users.json", "w", encoding="utf-8") as f:
json.dump(users, f, ensure_ascii=False, indent=4)
# 読み込み
with open("users.json", "r", encoding="utf-8") as f:
loaded = json.load(f)
for u in loaded:
print(u["name"])
Taro
Hanako
Ken
このようにJSONを使うと、複数のユーザー情報を1つのファイルに安全に保存できます。プログラムでのデータ管理がとても楽になりますね。