@@ -247,64 +247,89 @@ Basic Usage
247
247
the original one. That is, ``loads(dumps(x)) != x `` if x has non-string
248
248
keys.
249
249
250
- .. function :: load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
250
+ .. function :: load(fp, *, cls=None, object_hook=None, parse_float=None, \
251
+ parse_int=None, parse_constant=None, \
252
+ object_pairs_hook=None, **kw)
251
253
252
- Deserialize *fp * (a ``.read() ``-supporting :term: `text file ` or
253
- :term: `binary file ` containing a JSON document) to a Python object using
254
- this :ref: `conversion table <json-to-py-table >`.
254
+ Deserialize *fp * to a Python object
255
+ using the :ref: `JSON-to-Python conversion table <json-to-py-table >`.
255
256
256
- *object_hook * is an optional function that will be called with the result of
257
- any object literal decoded (a :class: `dict `). The return value of
258
- *object_hook * will be used instead of the :class: `dict `. This feature can
259
- be used to implement custom decoders (e.g. `JSON-RPC
260
- <https://www.jsonrpc.org> `_ class hinting).
257
+ :param fp:
258
+ A ``.read() ``-supporting :term: `text file ` or :term: `binary file `
259
+ containing the JSON document to be deserialized.
260
+ :type fp: :term: `file-like object `
261
261
262
- *object_pairs_hook * is an optional function that will be called with the
263
- result of any object literal decoded with an ordered list of pairs. The
264
- return value of *object_pairs_hook * will be used instead of the
265
- :class: `dict `. This feature can be used to implement custom decoders. If
266
- *object_hook * is also defined, the *object_pairs_hook * takes priority.
262
+ :param cls:
263
+ If set, a custom JSON decoder.
264
+ Additional keyword arguments to :func: `!load `
265
+ will be passed to the constructor of *cls *.
266
+ If ``None `` (the default), :class: `!JSONDecoder ` is used.
267
+ :type cls: a :class: `JSONDecoder ` subclass
268
+
269
+ :param object_hook:
270
+ If set, a function that is called with the result of
271
+ any object literal decoded (a :class: `dict `).
272
+ The return value of this function will be used
273
+ instead of the :class: `dict `.
274
+ This feature can be used to implement custom decoders,
275
+ for example `JSON-RPC <https://www.jsonrpc.org >`_ class hinting.
276
+ Default ``None ``.
277
+ :type object_hook: :term: `callable ` | None
278
+
279
+ :param object_pairs_hook:
280
+ If set, a function that is called with the result of
281
+ any object literal decoded with an ordered list of pairs.
282
+ The return value of this function will be used
283
+ instead of the :class: `dict `.
284
+ This feature can be used to implement custom decoders.
285
+ If *object_hook * is also set, *object_pairs_hook * takes priority.
286
+ Default ``None ``.
287
+ :type object_pairs_hook: :term: `callable ` | None
288
+
289
+ :param parse_float:
290
+ If set, a function that is called with
291
+ the string of every JSON float to be decoded.
292
+ If ``None `` (the default), it is equivalent to ``float(num_str) ``.
293
+ This can be used to parse JSON floats into custom datatypes,
294
+ for example :class: `decimal.Decimal `.
295
+ :type parse_float: :term: `callable ` | None
296
+
297
+ :param parse_int:
298
+ If set, a function that is called with
299
+ the string of every JSON int to be decoded.
300
+ If ``None `` (the default), it is equivalent to ``int(num_str) ``.
301
+ This can be used to parse JSON integers into custom datatypes,
302
+ for example :class: `float `.
303
+ :type parse_int: :term: `callable ` | None
304
+
305
+ :param parse_constant:
306
+ If set, a function that is called with one of the following strings:
307
+ ``'-Infinity' ``, ``'Infinity' ``, or ``'NaN' ``.
308
+ This can be used to raise an exception
309
+ if invalid JSON numbers are encountered.
310
+ Default ``None ``.
311
+ :type parse_constant: :term: `callable ` | None
312
+
313
+ :raises JSONDecodeError:
314
+ When the data being deserialized is not a valid JSON document.
267
315
268
316
.. versionchanged :: 3.1
269
- Added support for *object_pairs_hook *.
270
317
271
- *parse_float * is an optional function that will be called with the string of
272
- every JSON float to be decoded. By default, this is equivalent to
273
- ``float(num_str) ``. This can be used to use another datatype or parser for
274
- JSON floats (e.g. :class: `decimal.Decimal `).
318
+ * Added the optional *object_pairs_hook * parameter.
319
+ * *parse_constant * doesn't get called on 'null', 'true', 'false' anymore.
275
320
276
- *parse_int * is an optional function that will be called with the string of
277
- every JSON int to be decoded. By default, this is equivalent to
278
- ``int(num_str) ``. This can be used to use another datatype or parser for
279
- JSON integers (e.g. :class: `float `).
321
+ .. versionchanged :: 3.6
322
+
323
+ * All optional parameters are now :ref: `keyword-only <keyword-only_parameter >`.
324
+ * *fp * can now be a :term: `binary file `.
325
+ The input encoding should be UTF-8, UTF-16 or UTF-32.
280
326
281
327
.. versionchanged :: 3.11
282
328
The default *parse_int * of :func: `int ` now limits the maximum length of
283
329
the integer string via the interpreter's :ref: `integer string
284
330
conversion length limitation <int_max_str_digits>` to help avoid denial
285
331
of service attacks.
286
332
287
- *parse_constant * is an optional function that will be called with one of the
288
- following strings: ``'-Infinity' ``, ``'Infinity' ``, ``'NaN' ``. This can be
289
- used to raise an exception if invalid JSON numbers are encountered.
290
-
291
- .. versionchanged :: 3.1
292
- *parse_constant * doesn't get called on 'null', 'true', 'false' anymore.
293
-
294
- To use a custom :class: `JSONDecoder ` subclass, specify it with the ``cls ``
295
- kwarg; otherwise :class: `JSONDecoder ` is used. Additional keyword arguments
296
- will be passed to the constructor of the class.
297
-
298
- If the data being deserialized is not a valid JSON document, a
299
- :exc: `JSONDecodeError ` will be raised.
300
-
301
- .. versionchanged :: 3.6
302
- All optional parameters are now :ref: `keyword-only <keyword-only_parameter >`.
303
-
304
- .. versionchanged :: 3.6
305
- *fp * can now be a :term: `binary file `. The input encoding should be
306
- UTF-8, UTF-16 or UTF-32.
307
-
308
333
.. function :: loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
309
334
310
335
Deserialize *s * (a :class: `str `, :class: `bytes ` or :class: `bytearray `
0 commit comments