diff --git a/Doc/library/json.rst b/Doc/library/json.rst index 829218d5584..bcad61aeca3 100644 --- a/Doc/library/json.rst +++ b/Doc/library/json.rst @@ -230,10 +230,8 @@ Basic Usage *object_pairs_hook* is an optional function that will be called with the result of any object literal decoded with an ordered list of pairs. The return value of *object_pairs_hook* will be used instead of the - :class:`dict`. This feature can be used to implement custom decoders that - rely on the order that the key and value pairs are decoded (for example, - :func:`collections.OrderedDict` will remember the order of insertion). If - *object_hook* is also defined, the *object_pairs_hook* takes priority. + :class:`dict`. This feature can be used to implement custom decoders. + If *object_hook* is also defined, the *object_pairs_hook* takes priority. .. versionchanged:: 3.1 Added support for *object_pairs_hook*. @@ -325,10 +323,8 @@ Encoders and Decoders *object_pairs_hook*, if specified will be called with the result of every JSON object decoded with an ordered list of pairs. The return value of *object_pairs_hook* will be used instead of the :class:`dict`. This - feature can be used to implement custom decoders that rely on the order - that the key and value pairs are decoded (for example, - :func:`collections.OrderedDict` will remember the order of insertion). If - *object_hook* is also defined, the *object_pairs_hook* takes priority. + feature can be used to implement custom decoders. If *object_hook* is also + defined, the *object_pairs_hook* takes priority. .. versionchanged:: 3.1 Added support for *object_pairs_hook*. diff --git a/Lib/json/__init__.py b/Lib/json/__init__.py index a5660099af7..3bb4490e818 100644 --- a/Lib/json/__init__.py +++ b/Lib/json/__init__.py @@ -28,8 +28,7 @@ Encoding basic Python object hierarchies:: Compact encoding:: >>> import json - >>> from collections import OrderedDict - >>> mydict = OrderedDict([('4', 5), ('6', 7)]) + >>> mydict = {'4': 5, '6': 7} >>> json.dumps([1,2,3,mydict], separators=(',', ':')) '[1,2,3,{"4":5,"6":7}]' @@ -285,14 +284,11 @@ def load(fp, *, cls=None, object_hook=None, parse_float=None, ``object_pairs_hook`` is an optional function that will be called with the result of any object literal decoded with an ordered list of pairs. The return value of ``object_pairs_hook`` will be used instead of the ``dict``. - This feature can be used to implement custom decoders that rely on the - order that the key and value pairs are decoded (for example, - collections.OrderedDict will remember the order of insertion). If - ``object_hook`` is also defined, the ``object_pairs_hook`` takes priority. + This feature can be used to implement custom decoders. If ``object_hook`` + is also defined, the ``object_pairs_hook`` takes priority. To use a custom ``JSONDecoder`` subclass, specify it with the ``cls`` kwarg; otherwise ``JSONDecoder`` is used. - """ return loads(fp.read(), cls=cls, object_hook=object_hook, @@ -313,10 +309,8 @@ def loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, ``object_pairs_hook`` is an optional function that will be called with the result of any object literal decoded with an ordered list of pairs. The return value of ``object_pairs_hook`` will be used instead of the ``dict``. - This feature can be used to implement custom decoders that rely on the - order that the key and value pairs are decoded (for example, - collections.OrderedDict will remember the order of insertion). If - ``object_hook`` is also defined, the ``object_pairs_hook`` takes priority. + This feature can be used to implement custom decoders. If ``object_hook`` + is also defined, the ``object_pairs_hook`` takes priority. ``parse_float``, if specified, will be called with the string of every JSON float to be decoded. By default this is equivalent to @@ -337,7 +331,6 @@ def loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, kwarg; otherwise ``JSONDecoder`` is used. The ``encoding`` argument is ignored and deprecated. - """ if isinstance(s, str): if s.startswith('\ufeff'): diff --git a/Lib/json/decoder.py b/Lib/json/decoder.py index 3741deed7d5..d7d824454e1 100644 --- a/Lib/json/decoder.py +++ b/Lib/json/decoder.py @@ -292,10 +292,8 @@ class JSONDecoder(object): ``object_pairs_hook``, if specified will be called with the result of every JSON object decoded with an ordered list of pairs. The return value of ``object_pairs_hook`` will be used instead of the ``dict``. - This feature can be used to implement custom decoders that rely on the - order that the key and value pairs are decoded (for example, - collections.OrderedDict will remember the order of insertion). If - ``object_hook`` is also defined, the ``object_pairs_hook`` takes + This feature can be used to implement custom decoders. + If ``object_hook`` is also defined, the ``object_pairs_hook`` takes priority. ``parse_float``, if specified, will be called with the string @@ -317,7 +315,6 @@ class JSONDecoder(object): characters will be allowed inside strings. Control characters in this context are those with character codes in the 0-31 range, including ``'\\t'`` (tab), ``'\\n'``, ``'\\r'`` and ``'\\0'``. - """ self.object_hook = object_hook self.parse_float = parse_float or float