🐍 Python
json.dump() / load() でファイルに直接読み書きする
dump()とload()は(末尾にsが付かない)、文字列を経由せずファイルオブジェクトへ直接JSONを書き込み・読み込みするための関数です。「一度文字列にしてからファイルに書く」という手順を1ステップ省略できます。
json.dump(obj, f) # objをJSONとしてファイルオブジェクトfに書き込む
json.load(f) # ファイルオブジェクトfの中身をJSONとして読み込む
import json
data = {"id": 1, "name": "sample"}
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f)
import json
with open("data.json", "r", encoding="utf-8") as f:
loaded = json.load(f)
print(loaded)
# {'id': 1, 'name': 'sample'}
print(loaded == {"id": 1, "name": "sample"})
# True
s付き(dumps/loads)との違い
dumps/loads- Pythonの文字列との相互変換。APIレスポンスの本文やログへの埋め込みなど、文字列として扱いたい場面で使う
dump/load- ファイルオブジェクトとの相互変換。設定ファイルやデータの永続化など、直接ファイルとやり取りしたい場面で使う
💡 AIコードレビュー観点:encodingを省略するとOS依存になる
open()でencoding引数を省略すると、Windowsでは既定でShift_JIS系の文字コードが使われることがあり、日本語を含むJSONファイルを保存・読込する際に文字化けやUnicodeDecodeErrorの原因になります。AIが生成したコードでopen(path, "w")のようにencodingを省略している場合は、encoding="utf-8"を明示するよう提案しましょう。