3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

requests で ujson を使う

Last updated at Posted at 2016-02-03

Requests v2.9.1 では json ライブラリとして

  • simplejson があればそれを使う
  • なければ json を使う

という実装になっており、json ライブラリの関数で使っているのは dumps, loads のみなので、それらの互換性のある他の json ライブラリ、例えば ujson を使うこともできる。

以下のようにモジュールを格納している変数を上書きすれば切り替えられる:

import requests
import ujson

requests.models.complexjson = ujson

ただし、

  • あくまでも今の Requests の実装でうまくいく方法に過ぎない(外部仕様として保証されているわけではない)ので、 Requests のバージョンアップでうまくいかなくなる可能性があること
  • モジュール変数を書き換えているので、プロセス全体に影響してしまうこと

には注意。

参考文献

https://github.com/kennethreitz/requests/issues/1595
当時は requests.models.json という変数名だったが、こっそりリネームされていたようです。
以下のバージョンでは complexjson という名前になっています:

% git tag --contains fb6dade6
v2.8.0
v2.8.1
v2.9.0
v2.9.1

(明確な理由がなきゃ変えないといいつつ、不明確なコミットメッセージで変更されているのが気になったりしますが)

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?