今回は、PythonでJSONファイルを読み込む方法を紹介します。
しばしば、関連するjsonファイルからjsonデータを簡単に読み、パースしたいと思うことがあります。
方法1: json.load()を使って Python で JSON ファイルを読み込む
json モジュールは Python3 の組み込みモジュールで、 json.load()
を使って JSON ファイルを扱う機能を提供しています。
このメソッドを使って、PythonでJSONファイルを直接読み込んだ後、Pythonオブジェクトを構築することができます。
例えば、sample.json
が次のような内容のJSONファイルであるとします。
{ "name" : "Python" ,
"type" : "website" ,
"language" : "Python"
} |
このJSONオブジェクトをPythonのオブジェクトに読み込むには、以下のプログラムを使用します。
import json
with open ( "sample.json" , "r" ) as rf:
decoded_data = json.load(rf)
print (decoded_data)
# Check is the json object was loaded correctly try :
print (decoded_data[ "name" ])
except KeyError:
print ( "Oops! JSON Data not loaded correctly using json.loads()" )
|
結果は以下の通りです。
{ 'name' : 'Python' , 'type' : 'website' , 'language' : 'Python' }
Python |
確かに、ファイルからJSONオブジェクトを正しく読み込むことができました!
この記事もチェック:Pythonでopenメソッドを使用してファイルを開く方法
方法2:大きなJSONファイルにはijsonを使用する
JSONファイルが十分に大きく、コンテンツ全体をメモリに読み込むのにコストがかかる場合、より良い方法は、ijson
を使用してファイルのコンテンツをストリームに変換することです。
ストリームは(JSON オブジェクトと同じように)オブジェクトのコレクションで、必要に応じてメモリにロードされます。
つまり、データローダーは必要なときだけ、データを “遅延 “的にロードすることになります。
これにより、大きなファイルを扱う際のメモリ要件が緩和される。
json` をインストールするには、pip を使ってください。
pip install ijson
|
さて、実験のために、ギガバイトのデータをダウンロードするのは時間がかかるので、ある程度小さいJSONファイルを使うことにしましょう!
ここでは、このリンクにあるCOVIDタイムスケールJSONファイルを使用します。
ファイルをダウンロードし、名前を covid_timeseries.json
に変更します。
ファイルサイズは2MB程度にしてください。
import ijson
for prefix, type_of_object, value in ijson.parse( open ( "covid_timeseries.json" )):
print (prefix, type_of_object, value)
|
出力例(数行)
Yemen.item.date string 2020-4-13 Yemen.item map_key confirmed Yemen.item.confirmed number 1 Yemen.item map_key deaths Yemen.item.deaths number 0 Yemen.item map_key recovered Yemen.item.recovered number 0 Yemen.item end_map None Yemen.item start_map None Yemen.item map_key date Yemen.item.date string 2020-4-14 Yemen.item map_key confirmed Yemen.item.confirmed number 1 Yemen.item map_key deaths Yemen.item.deaths number 0 Yemen.item map_key recovered Yemen.item.recovered number 0 Yemen.item end_map None Yemen end_array None |
これは巨大なJSONファイルの内容を表示しますが、ファイル全体を表示しないように、カウンタ変数を保持しておくとよいでしょう。
json` は遅いかもしれませんが、低いメモリ制限の中で動作しているようです。
大きなファイルを扱う場合は、このモジュールを試してみるとよいでしょう。
この記事もチェック:Pythonでjsonの読み込み、出力、変換、整形を行う方法を解説する
まとめ
この記事では、PythonでJSONファイルを読み込む方法を学びました。
また、ijson
を使って大量のデータを扱う方法についても簡単に説明しました。