このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】JSONファイルの入力

JSONファイルの入力

 ここでは、Python の標準ライブラリ json モジュールを利用して、JSON 形式のファイルを読み込み、Python オブジェクトに変換する方法を解説します。JSON は、データ交換や設定ファイルなどで広く利用される軽量なテキスト形式であり、json モジュールを用いることで手軽にファイルからデータを取り込むことができます。以下、具体的な手法について、各章で詳しく説明していきます。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.JSONファイル読み込みの基本

1.1. jsonモジュールのインポートとファイルオープンの準備

 JSONファイルを読み込む前に、まず json モジュールをインポートし、open 関数を使って対象のファイルを読み込みモードでオープンします。open 関数の主要な引数とその意味は、以下の表にまとめています。

引数説明
ファイル名読み込み対象のファイルパス(例:"inventory.json")
モード'r':読み込みモード(省略時のデフォルト)
encodingファイルの文字エンコーディング。例:'utf-8'
newline改行コードの制御(通常、読み込み時は省略可)

 次のコード例は、UTF-8 エンコーディングで "catalog.json" をオープンし、ファイルオブジェクトを用意する方法を示しています。

import json

# "catalog.json" ファイルを UTF-8 エンコーディングで読み込みモードでオープン
with open("catalog.json", "r", encoding="utf-8") as file:
    # このブロック内でファイルの読み込み処理を実行します
    data = json.load(file)

 この例では、with 文を利用することで、ブロック終了時に自動的にファイルが閉じられるため、リソース管理が容易になります。

1.2. json.load関数によるJSONデータの変換

 json.load 関数は、オープンしたファイル内の JSON 形式のテキストを読み込み、対応する Python オブジェクト(辞書やリストなど)に変換します。主な引数は以下の通りです。

パラメータ説明
fp読み込み対象のファイルオブジェクト
object_hookJSON オブジェクトを変換する際に呼び出す関数(必要に応じてカスタム変換を行う場合に利用)
parse_float浮動小数点数の変換に利用する関数(文字列から float への変換処理をカスタマイズする場合に指定)
parse_int整数の変換に利用する関数(文字列から int への変換処理をカスタマイズする場合に指定)
parse_constant定数(NaN、Infinity など)の変換処理をカスタマイズする場合に指定

 通常は追加のオプションを指定せずに json.load(fp) とするだけで、JSON 形式のファイル内容をそのまま Python のデータ型に変換できます。以下の例では、先ほどオープンした "catalog.json" の内容を読み込み、変数 data に格納し、その内容を表示しています。

import json

with open("catalog.json", "r", encoding="utf-8") as file:
    # JSONファイルの内容を Python オブジェクト(通常はリストまたは辞書)に変換
    data = json.load(file)
    # 読み込んだデータを表示
    print(data)

この例の実行結果は、例えば次のような出力となります。

[{'name': 'mug', 'price': 1200}, {'name': 'notebook', 'price': 800}, {'name': 'pen', 'price': 300}]

2.読み込んだデータの活用例

2.1. データ型の確認とアクセス方法

 読み込んだ JSON データは、ファイルの構造に応じて Python の辞書やリストとして扱われます。データ型を確認することで、後続の処理に適した操作が可能になります。以下のコードは、読み込んだデータの型を確認し、各商品の情報にアクセスする例です。

import json

with open("catalog.json", "r", encoding="utf-8") as file:
    data = json.load(file)

# data の型を表示(例:list)
print("データ型:", type(data))

# 各商品の情報を出力
for catalog in data:
    # catalog は各商品を表す辞書であることを前提とする
    print("商品名:", catalog.get("name"), "価格:", catalog.get("price"))

実行結果

データ型: <class 'list'>
商品名: mug 価格: 1200
商品名: notebook 価格: 800
商品名: pen 価格: 300

 このコードでは、まず読み込んだデータがリストであることを確認し、各要素(辞書)から "name" と "price" の値を取り出して表示しています。

まとめ

 ここでは、json モジュールを用いた JSON ファイルの読み込み方法について解説しました。open 関数によるファイルオープンの際のオプション設定や、json.load 関数を利用した JSON 文字列から Python オブジェクトへの変換、さらに読み込んだデータの型確認と利用例について説明しました。これにより、JSON 形式のデータを安全かつ効率的に読み込み、プログラム内で活用するための基本操作が理解できます。