このページで解説している内容は、以下の 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 形式に変換し、ファイルオブジェクトに書き込むための関数です。主なオプションは以下の通りです。

パラメータ説明
objJSON形式に変換する Python オブジェクト(例:リスト、辞書など)
fp出力先のファイルオブジェクト
indent出力される JSON のインデント幅。数値を指定すると、その数分のスペースで階層が整形され、可読性が向上する。
ensure_asciiTrue の場合、非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 ファイルを容易に生成・管理できるようになります。