Python 3では、URLからjsonドキュメントをリクエストしています。
response = urllib.request.urlopen(request)
response
オブジェクトは、メソッドを持つファイルのようなread
オブジェクトreadline
です。通常、JSONオブジェクトは、テキストモードで開いたファイルを使用して作成できます。
obj = json.load(fp)
私がしたいのは:
obj = json.load(response)
ただし、urlopenはバイナリモードでファイルオブジェクトを返すため、これは機能しません。
もちろん、回避策は次のとおりです。
str_response = response.read().decode('utf-8')
obj = json.loads(str_response)
でもこれは気分が悪い...
バイトファイルオブジェクトを文字列ファイルオブジェクトに変換するためのより良い方法はありますか?urlopen
または、またはjson.load
エンコーディングを提供するためのパラメータがありませんか?