JSONは、WebアプリケーションやAPIの通信プロトコルとして非常に重要なフォーマットであり、PythonにはJSONデータを扱うための json
モジュールが標準で用意されています。json
モジュールには、JSONデータをPythonオブジェクトに変換するための json.load()
と json.loads()
という2つの関数がありますが、これらは何が違うのでしょうか。
json.load()
json.load()
は、JSON形式のファイルをPythonオブジェクトに変換するために使用されます。具体的には、以下のように使います。
import json
with open('data.json') as f:
data = json.load(f)
上記の例では、 data.json
ファイルを読み込んで、JSONデータをPythonオブジェクトに変換しています。json.load()
は、ファイルをオープンし、JSONデータをデシリアライズ(復元)してPythonオブジェクトに変換するため、引数にはファイルオブジェクトが必要です。
json.loads()
json.loads()
は、JSON形式の文字列をPythonオブジェクトに変換するために使用されます。具体的には、以下のように使います。
import json
json_data = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_data)
上記の例では、 json_data
変数にJSON形式の文字列を代入し、json.loads()
を使用して、JSONデータをPythonオブジェクトに変換しています。json.loads()
は、JSONデータをデシリアライズ(復元)してPythonオブジェクトに変換するため、引数にはJSON形式の文字列が必要です。
json.load() と json.loads() の違いは 引数の型
上記のとおり、json.load()
と json.loads()
の違いは、引数の型が異なることです。 json.load()
はファイルオブジェクトを引数として受け取り、ファイルからJSONデータを読み込み、Pythonオブジェクトに変換します。一方、 json.loads()
は文字列を引数として受け取り、JSONデータをPythonオブジェクトに変換します。つまり、 json.load()
はファイル入力に最適化されており、 json.loads()
は文字列入力に最適化されています。