diff --git a/aiogram/types/base.py b/aiogram/types/base.py index 1c8e6bf1..38c721c2 100644 --- a/aiogram/types/base.py +++ b/aiogram/types/base.py @@ -1,9 +1,9 @@ import io import typing -import ujson from typing import TypeVar from .fields import BaseField +from ..utils import json from ..utils.context import get_value PROPS_ATTR_NAME = '_props' @@ -165,7 +165,7 @@ class TelegramObject(metaclass=MetaTelegramObject): :return: JSON :rtype: :obj:`str` """ - return ujson.dumps(self.to_python()) + return json.dumps(self.to_python()) @classmethod def create(cls, *args, **kwargs): diff --git a/aiogram/utils/json.py b/aiogram/utils/json.py index a83f3712..a5d214d7 100644 --- a/aiogram/utils/json.py +++ b/aiogram/utils/json.py @@ -1,16 +1,27 @@ +import json + try: - import ujson as json + import ujson - IS_UJSON = True + _UJSON_IS_AVAILABLE = True except ImportError: - import json + _UJSON_IS_AVAILABLE = False - IS_UJSON = False +_use_ujson = _UJSON_IS_AVAILABLE + + +def disable_ujson(): + global _use_ujson + _use_ujson = False def dumps(data): + if _use_ujson: + return ujson.dumps(data) return json.dumps(data) def loads(data): + if _use_ujson: + return ujson.loads(data) return json.loads(data)