このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Python入門】JSONファイルの出力

JSONファイルの出力
ここでは、Python の標準ライブラリ json モジュールを用いて、Python オブジェクトを JSON 形式に変換し、ファイルへ出力する方法について解説します。JSON は、軽量で可読性の高いデータ交換フォーマットとして、Web API や設定ファイルなどさまざまな用途で利用されます。専用の json モジュールを使えば、手動で文字列を整形する手間を省き、安全かつ効率的に JSON ファイルを生成できます。以下、具体的な手法を章立てして詳しく説明していきます。

プログラムのダウンロード
「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。
1.JSONファイル出力の基本
1.1. jsonモジュールのインポートとファイルのオープン
JSON ファイルへの出力を行うには、まず json モジュールをインポートし、open 関数を用いて出力先のファイルをオープンします。open 関数の主要な引数とその意味は以下の表のとおりです。
引数 | 意味 |
---|---|
ファイル名 | 書き込み対象のファイルパス(例:"catalog.json") |
モード | 'w':書き込み。既存ファイルは上書きされる。 |
encoding | ファイルの文字エンコーディング。例:'utf-8' |
newline | 改行コードの制御。空文字列 ('') を指定すると不要な改行が挿入されなくなる。 |
以下のコード例では、出力ファイルを "catalog.json" とし、UTF-8 エンコーディングでオープンしています。with 文を使うことで、ブロック終了時にファイルが自動的に閉じられるため、リソース管理が簡単になります。
import json
# JSON に変換するデータ:各商品を辞書として表現し、リストにまとめる
catalog = [
{'name': 'mug', 'price': 1200},
{'name': 'notebook', 'price': 800},
{'name': 'pen', 'price': 300}
]
# 'w' モードでファイルをオープン。newline='' により余計な改行を防止し、UTF-8 でエンコード
with open("catalog.json", "w", encoding="utf-8", newline="") as file:
# JSONファイルへ出力するための処理
json.dump(catalog, file, indent=4)
catalog.jsonの内容
[
{
"name": "mug",
"price": 1200
},
{
"name": "notebook",
"price": 800
},
{
"name": "pen",
"price": 300
}
]
1.2. dump関数によるJSON出力とオプションの解説
json.dump 関数は、指定した Python オブジェクト(この例ではリスト catalog)を JSON 形式に変換し、ファイルオブジェクトに書き込むための関数です。主なオプションは以下の通りです。
パラメータ | 説明 |
---|---|
obj | JSON形式に変換する Python オブジェクト(例:リスト、辞書など) |
fp | 出力先のファイルオブジェクト |
indent | 出力される JSON のインデント幅。数値を指定すると、その数分のスペースで階層が整形され、可読性が向上する。 |
ensure_ascii | True の場合、非ASCII文字をエスケープする(デフォルトは True)。False にすると、Unicode文字をそのまま出力する。 |
上記のコード例では、indent=4 を指定しているため、JSON ファイルは 4 スペースのインデントで整形され、以下のような出力となります。
[
{
"name": "mug",
"price": 1200
},
{
"name": "notebook",
"price": 800
},
{
"name": "pen",
"price": 300
}
]
このように、dump 関数を利用することで、複雑なデータ構造も簡単に JSON 形式に変換・出力することが可能です。また、必要に応じて ensure_ascii やその他のオプションを活用することで、特定の要件に合わせた JSON ファイルの生成が実現できます。
まとめ
ここでは、json モジュールを用いた JSON ファイルの出力方法について、open 関数のオプション設定や json.dump 関数の使い方、そして indent オプションによる整形出力の効果について解説しました。これにより、Python オブジェクトを効率的に JSON 形式へ変換し、ファイルに書き込む方法を理解できます。これらの基本操作を習得することで、設定ファイルやデータ交換用の JSON ファイルを容易に生成・管理できるようになります。