Python3 で JSON の読み書きをする方法(WebAPI にも対応) – サンプルコード付

WEBのシステム開発はPHPを使用していますが、データ解析等のため Python3 の研究を始めました。Python3 は日本語の情報がとても少ないので、エンジニアや学生の皆さんに役立ちそうなことをブログ記事として共有できればと思います。

この記事では Python3 で JSON の読み書きをする方法についてまとめました。JSON は WebAPI のレスポンスとして使用されることが多いため、リモートの JSON をパースする方法についてもサンプルーコード付きで紹介します。

JSON の読み書き事始め

Python3 で JSON を扱うに当たってパッケージ・ライブラリのインストールは不要です。標準モジュール json で扱うことができます。

json モジュール公式ドキュメント
json — JSON エンコーダおよびデコーダ

 

JSON のファイル書き出し・文字列出力

json モジュールを使うことで Python オブジェクトを簡単にファイル書き出し、文字列に変換することができます。ファイルとして書き込みたいなら json.dump() を、文字列に変換したいなら json.dumps() を使うだけです。サンプルコードを見てみましょう。

 

JSON の読み込み(ローカルファイル)

JSON ファイルの読み込みには json.load() を、JSON 文字列の読み込みには json.loads() を使うことで、Python オブジェクトとして扱うことができます。

json.load() を使って上の書き込みの項目で生成したファイルを読み込むサンプルコードを見てみましょう。( json.loads() については WebAPI のサンプルで紹介します。)

念のためjson.JSONDecodeError で例外処理をしています。

 

JSON の読み込み – WebAPI(リモートファイル)

JSON はローカルファイル以外に WebAPI のレスポンスとして、リモートのサーバから読み込むことが多いかと思います。弊社サーバに設置した JSON ファイルを例にリモートの JSON ファイルを読み込むサンプルをご紹介します。

サンプルJSONファイルを見る

ポイント解説

urllib.request
open 関数ではリモートファイルを開くことはできません。URL をもとにリモートファイルを開くには標準モジュール urllib.request を使用します。サンプルコードでは res.read().decode(‘utf-8’) で URL の出力内容を全取得、さらに UTF-8 にデコードしてます。よくある使い方なので urllib.request を初めてみるという方は下記の公式ドキュメントをチェックしましょう。

urllib.request 公式ドキュメント
urllib.request — URL を開くための拡張可能なライブラリ

json_loads()
取得した JSON 文字列をjson_loads() の引数として渡すことで、Python オブジェクトとして柔軟に扱うことができます。

 

以上、Python3 で JSON の読み書きする方法をまとめてみました。弊社の専門はPHP言語なので、おかしなところがあればご指摘ください。
※この記事の内容は適宜更新することがあります。