|
|
|
@ -122,7 +122,7 @@ _default_encoder = JSONEncoder( |
|
|
|
|
|
|
|
def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, |
|
|
|
allow_nan=True, cls=None, indent=None, separators=None, |
|
|
|
default=None, **kw): |
|
|
|
default=None, sort_keys=False, **kw): |
|
|
|
"""Serialize ``obj`` as a JSON formatted stream to ``fp`` (a |
|
|
|
``.write()``-supporting file-like object). |
|
|
|
|
|
|
|
@ -155,6 +155,9 @@ def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, |
|
|
|
``default(obj)`` is a function that should return a serializable version |
|
|
|
of obj or raise TypeError. The default simply raises TypeError. |
|
|
|
|
|
|
|
If *sort_keys* is ``True`` (default: ``False``), then the output of |
|
|
|
dictionaries will be sorted by key. |
|
|
|
|
|
|
|
To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the |
|
|
|
``.default()`` method to serialize additional types), specify it with |
|
|
|
the ``cls`` kwarg; otherwise ``JSONEncoder`` is used. |
|
|
|
@ -164,7 +167,7 @@ def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, |
|
|
|
if (not skipkeys and ensure_ascii and |
|
|
|
check_circular and allow_nan and |
|
|
|
cls is None and indent is None and separators is None and |
|
|
|
default is None and not kw): |
|
|
|
default is None and not sort_keys and not kw): |
|
|
|
iterable = _default_encoder.iterencode(obj) |
|
|
|
else: |
|
|
|
if cls is None: |
|
|
|
@ -172,7 +175,7 @@ def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, |
|
|
|
iterable = cls(skipkeys=skipkeys, ensure_ascii=ensure_ascii, |
|
|
|
check_circular=check_circular, allow_nan=allow_nan, indent=indent, |
|
|
|
separators=separators, |
|
|
|
default=default, **kw).iterencode(obj) |
|
|
|
default=default, sort_keys=sort_keys, **kw).iterencode(obj) |
|
|
|
# could accelerate with writelines in some versions of Python, at |
|
|
|
# a debuggability cost |
|
|
|
for chunk in iterable: |
|
|
|
@ -181,7 +184,7 @@ def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, |
|
|
|
|
|
|
|
def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, |
|
|
|
allow_nan=True, cls=None, indent=None, separators=None, |
|
|
|
default=None, **kw): |
|
|
|
default=None, sort_keys=False, **kw): |
|
|
|
"""Serialize ``obj`` to a JSON formatted ``str``. |
|
|
|
|
|
|
|
If ``skipkeys`` is false then ``dict`` keys that are not basic types |
|
|
|
@ -213,6 +216,9 @@ def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, |
|
|
|
``default(obj)`` is a function that should return a serializable version |
|
|
|
of obj or raise TypeError. The default simply raises TypeError. |
|
|
|
|
|
|
|
If *sort_keys* is ``True`` (default: ``False``), then the output of |
|
|
|
dictionaries will be sorted by key. |
|
|
|
|
|
|
|
To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the |
|
|
|
``.default()`` method to serialize additional types), specify it with |
|
|
|
the ``cls`` kwarg; otherwise ``JSONEncoder`` is used. |
|
|
|
@ -222,14 +228,14 @@ def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, |
|
|
|
if (not skipkeys and ensure_ascii and |
|
|
|
check_circular and allow_nan and |
|
|
|
cls is None and indent is None and separators is None and |
|
|
|
default is None and not kw): |
|
|
|
default is None and not sort_keys and not kw): |
|
|
|
return _default_encoder.encode(obj) |
|
|
|
if cls is None: |
|
|
|
cls = JSONEncoder |
|
|
|
return cls( |
|
|
|
skipkeys=skipkeys, ensure_ascii=ensure_ascii, |
|
|
|
check_circular=check_circular, allow_nan=allow_nan, indent=indent, |
|
|
|
separators=separators, default=default, |
|
|
|
separators=separators, default=default, sort_keys=sort_keys, |
|
|
|
**kw).encode(obj) |
|
|
|
|
|
|
|
|
|
|
|
|