
PythonでデータをJSON形式のファイルに保存したいときに便利なのが json
モジュールです。
その中でも json.dump()
は、「辞書やリストなどのPythonオブジェクトをJSONファイルに書き込む」ための基本的な関数です。
この記事では json.dump()
の基本的な使い方から、指定できる引数の意味、活用シーンまでをわかりやすく丁寧に解説します。
json.dump() とは?
json.dump()
は、Pythonのオブジェクト(辞書、リストなど)をJSON形式に変換し、ファイルに直接書き込むための関数です。
「dump」は直訳で「投げ込む」という意味で、「PythonのデータをそのままJSONファイルに放り込む(書き出す)」というイメージです。
ファイル保存の際に、手軽に構造化されたデータを残すことができます。
辞書やリストの違いが曖昧な方は下記記事を参考にしてください。
【Python】listとdict(辞書)の違いとは?初心者にもわかりやすく徹底解説!
基本的な使い方
まずは、Pythonの辞書をJSONファイルに書き出す基本のコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 |
import json data = { "name": "Taro", "age": 25, "hobbies": ["reading", "gaming"] } with open("output.json", "w", encoding="utf-8") as f: json.dump(data, f) |
このコードでは:
data
という辞書型の変数をoutput.json
というファイルにJSON形式で保存
結果として、次のような内容のファイルが作成されます。
1 2 |
{"name": "Taro", "age": 25, "hobbies": ["reading", "gaming"]} |
Pythonの辞書やリストがそのままJSONとして記録されるため、再利用しやすくなります。
具体例:インデント付きで整形して保存
json.dump()
はそのままだと1行にすべて書き出されてしまうため、見やすく整形して保存したい場合は indent
引数を使います。
1 2 3 |
with open("output_pretty.json", "w", encoding="utf-8") as f: json.dump(data, f, indent=4) |
このようにすると、以下のように整った形で保存されます。
1 2 3 4 5 6 7 8 9 |
{ "name": "Taro", "age": 25, "hobbies": [ "reading", "gaming" ] } |
人間が確認しやすい形式になるため、設定ファイルやログなどに最適です。
json.dump() の主な引数
json.dump()
にはさまざまなオプションがあります。
代表的なものを一覧でまとめます。
引数 | 説明 |
---|---|
obj |
書き出すPythonオブジェクト(辞書やリストなど) |
fp |
書き込み先のファイルオブジェクト(fpはfile pointer(ファイルポインタ)の略) |
indent |
整形出力のインデント(例:2, 4) ネストされた要素を表示する際に、何スペースで字下げするかを指定します。 |
ensure_ascii |
デフォルトは True 。日本語をそのまま保存したい場合は False にする |
sort_keys |
True にするとキーをアルファベット順にソートして出力 |
separators |
要素間の区切りを指定(デフォルトは (", ", ": ") ) |
具体例:基本的な保存
1 2 3 4 5 6 7 |
import json data = {"name": "Taro", "age": 25} with open("output.json", "w", encoding="utf-8") as f: json.dump(data, f) |
data
→obj
に該当(書き出すPythonの辞書)f
→fp
に該当(書き込み先ファイルオブジェクト)
具体例:整形して日本語を含めて保存
1 2 3 4 5 |
data = {"名前": "たろう", "年齢": 25} with open("japanese.json", "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=2) |
ensure_ascii=False
によって"たろう"
などの日本語をエスケープせず出力indent=2
によって2スペースで整形されたJSONファイルに
このように、json.dump()
の各引数は、データの保存方法やフォーマットを柔軟に調整するために使える重要なオプションです。
注意点
dumpはファイル書き出し、dumpsは文字列出力
json.dump()
はファイルに書き込む関数ですが、似た名前の json.dumps()
は「文字列としてJSONを返す関数」です。
1 2 3 |
json_str = json.dumps(data, indent=2) print(json_str) |
このように、ファイルに保存する必要がないときや、APIのレスポンスに使いたいときは dumps()
を使います。
書き込みモードに注意
ファイルを開くときは "w"
(上書き)か "a"
(追記)モードで開きますが、同じファイルに複数回 json.dump()
を使っても正しいJSONにはなりません。
そのため、1つのJSONオブジェクトだけを保存する設計にしておくか、複数のオブジェクトを扱いたい場合はリスト化してまとめて保存しましょう。
まとめ
今回は json.dump()
の使い方について詳しく紹介しました。
json.dump()
はPythonオブジェクトをJSON形式でファイルに保存する関数indent
で整形できる- 設定ファイル、ログ、構造化データの保存に最適
- 文字列で扱いたい場合は
json.dumps()
を使う - 同一ファイルに複数回書き込む場合は形式に注意が必要
JSONはシンプルで汎用的なデータ形式なので、Pythonでのデータ保存や通信処理には欠かせません。
json.dump()
を使いこなして、わかりやすく再利用しやすいデータ管理を実現しましょう。