結論から言うと、PythonでJSONを扱うときは json.dump() で保存し、json.load() で読み込む流れを押さえると理解しやすくなります。
JSONは、設定ファイルやAPIのデータでよく使われる形式です。
Pythonの辞書やリストに近い見た目なので読みやすい一方、ファイルとして保存するときには専用の変換が必要です。
この記事では、JSONを読み書きする基本を、動くコードと一緒に整理します。
この記事でわかること
完成コード
完成コードは次の通りです。
import json
from pathlib import Path
json_path = Path("sample_settings.json")
settings = {
"app_name": "売上チェックツール",
"tax_rate": 0.1,
"output_columns": ["date", "item", "amount"],
"notify": True,
}
with open(json_path, mode="w", encoding="utf-8") as file:
json.dump(settings, file, ensure_ascii=False, indent=2)
with open(json_path, mode="r", encoding="utf-8") as file:
loaded_settings = json.load(file)
print(loaded_settings["app_name"])
print(f"消費税率: {loaded_settings['tax_rate']}")
print("出力列:", ", ".join(loaded_settings["output_columns"]))コードのポイント
このコードでは、Pythonの辞書をJSONファイルに保存し、そのあと読み込んで値を取り出しています。
json.dump()はPythonのデータをJSONとしてファイルへ保存しますjson.load()はJSONファイルを読み込んでPythonのデータに戻しますensure_ascii=Falseを指定すると、日本語を読みやすい形で保存できますindent=2を指定すると、JSONファイルが見やすく整形されます
JSONは、辞書やリストの構造をそのまま保存したいときに便利です。
CSVよりも、設定値や入れ子のあるデータを扱いやすい場面があります。
コードを順番に説明します
主要な処理を分けて説明します。
1. 保存したいデータを辞書で用意します
settings = {
"app_name": "売上チェックツール",
"tax_rate": 0.1,
"output_columns": ["date", "item", "amount"],
"notify": True,
}ここでは、アプリの設定を辞書で表しています。
文字列、数値、リスト、真偽値を1つのまとまりとして持っています。
JSONは、このように意味のある設定やデータを保存する場面に向いています。
単純な表であればCSV、構造を持ったデータであればJSONと考えると選びやすくなります。
2. json.dump() でファイルへ保存します
with open(json_path, mode="w", encoding="utf-8") as file:
json.dump(settings, file, ensure_ascii=False, indent=2)json.dump() は、Pythonの辞書やリストをJSON形式でファイルへ書き込む関数です。ensure_ascii=False を付けると、日本語が \u から始まる表記に変換されず、そのまま読みやすく保存されます。
indent=2 は、見やすいように改行と字下げを入れる指定です。
人が直接開いて確認する設定ファイルでは、整形しておくと保守しやすくなります。
3. json.load() で読み込んで使います
with open(json_path, mode="r", encoding="utf-8") as file:
loaded_settings = json.load(file)
print(loaded_settings["app_name"])json.load() は、JSONファイルを読み込んでPythonのデータに戻します。
この例では、読み込んだ結果を辞書として扱い、loaded_settings["app_name"] のように値を取り出しています。
読み込んだあとは通常の辞書やリストと同じように扱えます。
設定ファイルを読み込んで処理を切り替えたいときに使いやすい形です。
実務で使うときのポイント
実務でJSONを使うときは、保存するデータの構造と、誰が読むファイルなのかを意識すると扱いやすくなります。
- 設定ファイルとして使うなら、
indentを付けて人が読みやすい形にしておくと便利です - 日本語を含むなら、
encoding="utf-8"とensure_ascii=Falseを組み合わせると確認しやすくなります - APIから受け取るJSONでは、想定したキーが必ずあるとは限らないため確認が必要です
- 日付や独自クラスのオブジェクトは、そのままではJSONへ保存できない場合があります
ツールの設定保存、処理結果の一時保存、Web APIとのデータ受け渡しなど、JSONは実務でよく登場します。
第3章で扱ったテキスト、CSV、JSONの違いを押さえると、保存したいデータに合わせて形式を選びやすくなります。