PythonでWebアプリケーションやAPIを扱う際に、JSON(JavaScript Object Notation)形式のデータを読み込む必要がある場面は非常に多いです。
その中でも json.load
は「ファイルからJSONデータを読み込む」際に使われる基本的な関数です。
この記事では json.load
の基本的な使い方から、活用シーン、注意点までをわかりやすく丁寧に解説します。
json.loadとは?
json.load
は、Pythonの標準ライブラリ json
に含まれる関数で、ファイルオブジェクトからJSONデータを読み込んでPythonオブジェクトに変換する機能を持ちます。
JSONファイルの内容を辞書(dict)やリスト(list)などのPythonのデータ型として取得したい場合に使用します。
Pythonでは、ファイルオブジェクトを指定して json.load()
を使うことで、JSONファイルの内容を直接Pythonで扱えるデータに変換できます。
基本的な使い方
まずは、基本的なJSONファイルを読み込むコードを見てみましょう。
1 2 3 4 5 6 7 8 |
import json # JSONファイルを読み込む with open('data.json', 'r', encoding='utf-8') as file: data = json.load(file) print(data) print(type(data)) |
このコードでやっていることは:
json
モジュールをインポートopen()
でJSONファイルを開くjson.load()
でファイルの内容をPythonオブジェクトに変換- 読み込んだデータを出力
例えば、以下のような data.json
ファイルがあるとします:
1 2 3 4 5 6 7 |
{ "name": "田中太郎", "age": 30, "city": "東京", "hobbies": ["読書", "映画鑑賞", "プログラミング"] } |
このファイルを読み込むと、Pythonの辞書型として扱えるようになります。
具体例:設定ファイルの読み込みとして使う
json.load
は設定ファイルやコンフィグファイルを読み込む際にもよく使われます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import json # 設定ファイルを読み込む with open('config.json', 'r', encoding='utf-8') as config_file: config = json.load(config_file) # 設定値を取得 database_url = config['database']['url'] debug_mode = config['application']['debug'] port = config['server']['port'] print(f"データベースURL: {database_url}") print(f"デバッグモード: {debug_mode}") print(f"サーバーポート: {port}") |
このように:
json.load()
で設定ファイルを読み込み- 辞書形式でアクセスして各種設定値を取得
- アプリケーションの動作に必要な設定を活用
この一連の操作で、外部設定ファイルを使ったアプリケーション開発ができます。
json.loadで読み込めるデータ型の例
JSONファイルには以下のようなデータ型が含まれ、それぞれPythonの対応する型に変換されます。
JSON型 | Python型 | 例 |
---|---|---|
object | dict | {"key": "value"} |
array | list | [1, 2, 3] |
string | str | "hello" |
number | int/float | 42 , 3.14 |
true/false | bool | True , False |
null | None | None |
ブラウザの開発者ツールやAPIのレスポンスで確認できるJSON形式なら、ほぼすべて読み込み可能です。
json.loadの引数オプション
json.load()
には以下のようなオプション引数も指定できます:
1 2 |
data = json.load(file, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True) |
- object_hook:辞書を別のオブジェクトに変換する関数を指定
- parse_float:浮動小数点数の解析方法を指定
- parse_int:整数の解析方法を指定
- parse_constant:定数(-Infinity、Infinity、NaN)の解析方法を指定
- strict:厳密なJSON形式チェックの有効/無効
また、文字列から直接読み込む場合は json.loads()
を使います。
json.loadを使うときの注意点
ファイルエンコーディングに注意
日本語などの非ASCII文字が含まれるJSONファイルを読み込む場合、with open()
の段階でエンコーディングを明示的に指定する必要があります。
1 2 3 4 |
# UTF-8エンコーディングを明示的に指定 with open('data.json', 'r', encoding='utf-8') as file: data = json.load(file) |
encoding='utf-8'
を指定しないと、日本語文字で文字化けエラーが発生することがあります。
JSONファイルの形式エラーに注意
JSONファイルの形式が正しくない場合、json.JSONDecodeError
が発生します。
その場合は例外処理を使って、エラーハンドリングを行います。
1 2 3 4 5 6 7 8 9 10 |
import json try: with open('data.json', 'r', encoding='utf-8') as file: data = json.load(file) except json.JSONDecodeError as e: print(f"JSON形式エラー: {e}") except FileNotFoundError: print("ファイルが見つかりません") |
ファイルサイズが大きい場合のメモリ使用量
非常に大きなJSONファイルを読み込む場合、メモリを大量に消費する可能性があります。
大きなデータを扱う場合は、ストリーミング処理や部分的な読み込みを検討しましょう。
まとめ
今回はPythonの json.load
関数について紹介しました。
json.load
は指定したファイルオブジェクトからJSONデータを読み込むための基本関数- エンコーディング(UTF-8など)を明示的に指定して安全に読み込める
- 設定ファイル→読み込み→アプリケーションでの活用といった一連の操作も簡単に実現できる
- ファイル形式エラーには例外処理で対応し、
json.JSONDecodeError
との併用が有効
json.load
をマスターすれば、設定ファイルの管理、APIレスポンスの処理、データ分析など、さまざまなシーンでJSONデータを効率的に扱えるようになります。
Pythonでのデータ処理を行う基本スキルとして、ぜひしっかり理解しておきましょう。