aiogram/aiogram/utils/json.py

48 lines
843 B
Python
Raw Normal View History

2018-09-22 02:44:20 +03:00
import importlib
import os
JSON = 'json'
RAPIDJSON = 'rapidjson'
UJSON = 'ujson'
2017-10-20 11:11:01 +03:00
2018-09-22 02:44:20 +03:00
# Detect mode
mode = JSON
for json_lib in (RAPIDJSON, UJSON):
if 'DISABLE_' + json_lib.upper() in os.environ:
continue
2018-09-22 02:44:20 +03:00
try:
json = importlib.import_module(json_lib)
except ImportError:
continue
else:
2018-09-22 02:44:20 +03:00
mode = json_lib
break
2018-09-22 02:44:20 +03:00
if mode == RAPIDJSON:
def dumps(data):
return json.dumps(data, ensure_ascii=False)
2017-10-20 11:11:01 +03:00
2017-08-14 22:34:13 +03:00
2018-09-22 02:44:20 +03:00
def loads(data):
return json.loads(data, number_mode=json.NM_NATIVE)
2018-09-22 02:44:20 +03:00
elif mode == UJSON:
def loads(data):
return json.loads(data)
2018-09-22 02:44:20 +03:00
def dumps(data):
return json.dumps(data, ensure_ascii=False)
2018-09-22 02:44:20 +03:00
else:
import json
2017-07-11 23:41:40 +03:00
def dumps(data):
return json.dumps(data, ensure_ascii=False)
2017-07-11 23:41:40 +03:00
def loads(data):
return json.loads(data)