diff --git a/bson/json_util.py b/bson/json_util.py index 699f5d8f4a..1c62d0b72f 100644 --- a/bson/json_util.py +++ b/bson/json_util.py @@ -497,7 +497,11 @@ def loads(s: Union[str, bytes, bytearray], *args: Any, **kwargs: Any) -> Any: Accepts optional parameter `json_options`. See :class:`JSONOptions`. """ json_options = kwargs.pop("json_options", DEFAULT_JSON_OPTIONS) - kwargs["object_pairs_hook"] = lambda pairs: object_pairs_hook(pairs, json_options) + # Execution time optimization if json_options.document_class is dict + if json_options.document_class is dict: + kwargs["object_hook"] = lambda obj: object_hook(obj, json_options) + else: + kwargs["object_pairs_hook"] = lambda pairs: object_pairs_hook(pairs, json_options) return json.loads(s, *args, **kwargs) diff --git a/doc/contributors.rst b/doc/contributors.rst index b6e143440b..d7f1030322 100644 --- a/doc/contributors.rst +++ b/doc/contributors.rst @@ -99,3 +99,4 @@ The following is a list of people who have contributed to - Iris Ho (sleepyStick) - Stephan Hof (stephan-hof) - Casey Clements (caseyclements) +- Ivan Lukyanchikov (ilukyanchikov)