PythonでJSONファイルを読み書きする方法(jsonモジュールの使い方)
生徒
「先生、Pythonでデータをファイルに保存したいんですが、どんな形式で保存すればいいですか?」
先生
「よく使われるのがJSON(ジェイソン)という形式ですね。Pythonではjsonというモジュールを使って簡単に読み書きできますよ。」
生徒
「JSONってよく聞きますけど、どんなものなんですか?Pythonでどうやって扱うのか知りたいです!」
先生
「それでは、PythonでJSONファイルを読み書きする方法を、やさしく丁寧に説明していきましょう!」
1. JSON(ジェイソン)ファイルってなに?
JSONとは、JavaScript Object Notationの略で、データを「鍵」と「値」の組み合わせで保存するファイル形式です。たとえば、名前や年齢を保存するときに次のような形式になります。
{
"name": "Taro",
"age": 25
}
見た目は英語っぽいですが、誰でも理解しやすく、インターネット上でもよく使われています。Pythonでも標準のjsonモジュールを使えば、とても簡単に扱えます。
2. jsonモジュールを使ってPythonでJSONを書き込もう
まずは、PythonのプログラムでJSONファイルを書き込む方法を紹介します。書き込みとは、Pythonのデータをファイルに保存することです。
import json
data = {
"name": "Hanako",
"age": 30,
"hobbies": ["reading", "travel"]
}
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
ポイント解説:
import jsonは、Pythonでjsonモジュールを使うための書き方with open()でファイルを開き、「w」は書き込みモードjson.dump()は、PythonのデータをJSONファイルに書き込む関数ensure_ascii=Falseにすると日本語も文字化けしませんindent=4で、見やすいように4つ分のスペースで整形
このコードを実行すると、「data.json」というファイルが作成され、中にきれいに整形されたJSONデータが保存されます。
3. PythonでJSONファイルを読み込む方法
次は、さきほど保存したJSONファイルを読み込む方法です。読み込みとは、ファイルの内容をPythonで使えるようにすることです。
import json
with open("data.json", "r", encoding="utf-8") as f:
loaded_data = json.load(f)
print(loaded_data)
ポイント解説:
"r"は読み込みモード(readの略)json.load()を使うと、ファイルの中身をPythonの辞書(dictionary)として読み込めますprint()で内容を画面に表示できます
たとえば、保存した「Hanako」さんのデータが次のように表示されます。
{'name': 'Hanako', 'age': 30, 'hobbies': ['reading', 'travel']}
4. 読み込んだJSONのデータを扱うには?
読み込んだJSONデータは、Pythonの辞書(dict)として扱えるので、次のように値を取り出すことができます。
print(loaded_data["name"]) # → Hanako
print(loaded_data["age"]) # → 30
print(loaded_data["hobbies"][0]) # → reading
辞書とは、「鍵(キー)」と「値(バリュー)」のペアで情報を管理する仕組みで、loaded_data["name"]のように書くと、その「name」に対応する値を取り出せます。
5. JSONを扱うときの注意点
PythonでJSONファイルを読み書きする際は、次の点に注意しましょう。
- ファイル名は必ず
.jsonで終わるようにする(例:data.json) - ファイルを開くときは文字コードを
utf-8に指定する - 辞書形式のデータしか保存できない(Pythonのクラスなどは保存不可)
- 日本語を含む場合は
ensure_ascii=Falseを指定
また、JSONファイルは構造がカンタンなので、パソコン初心者でもメモ帳などで中身を確認することができます。
6. JSONとCSVの違いってなに?
PythonではCSVファイルもよく使われます。CSVは表形式(カンマ区切り)のデータで、Excelのような表に向いています。対してJSONは、複雑な構造(入れ子やリスト)をもつデータに向いています。
たとえば、1人の人に複数の趣味があるようなデータは、CSVよりもJSONの方が相性が良いです。
どちらを使うかは、データの性質や使う目的によって選ぶようにしましょう。