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