Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
3961f187
Kaydet (Commit)
3961f187
authored
May 05, 2008
tarafından
Georg Brandl
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Fix JSON module docs.
üst
4b964f9c
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
94 additions
and
128 deletions
+94
-128
json.rst
Doc/library/json.rst
+94
-128
No files found.
Doc/library/json.rst
Dosyayı görüntüle @
3961f187
:mod:`json` JSON encoder and decoder
====================================
:mod:`json`
---
JSON encoder and decoder
====================================
====
.. module:: json
:synopsis:
encode and decode the JSON format
:synopsis:
Encode and decode the JSON format.
.. moduleauthor:: Bob Ippolito <bob@redivi.com>
.. sectionauthor:: Bob Ippolito <bob@redivi.com>
.. versionadded:: 2.6
...
...
@@ -10,8 +10,8 @@
JSON (JavaScript Object Notation) <http://json.org> is a subset of JavaScript
syntax (ECMA-262 3rd edition) used as a lightweight data interchange format.
:mod:`json` exposes an API familiar to use
s of the standard library marshal and
pickle
modules.
:mod:`json` exposes an API familiar to use
rs of the standard library
:mod:`marshal` and :mod:`pickle`
modules.
Encoding basic Python object hierarchies::
...
...
@@ -74,7 +74,7 @@ Specializing JSON object decoding::
>>> json.loads('1.1', parse_float=decimal.Decimal)
Decimal('1.1')
Extending
JSONEncoder
::
Extending
:class:`JSONEncoder`
::
>>> import json
>>> class ComplexEncoder(json.JSONEncoder):
...
...
@@ -106,7 +106,7 @@ Using json.tool from the shell to validate and pretty-print::
.. note::
Note that t
he JSON produced by this module's default settings is a subset of
T
he JSON produced by this module's default settings is a subset of
YAML, so it may be used as a serializer for that as well.
...
...
@@ -115,139 +115,104 @@ Basic Usage
.. function:: dump(obj, fp[, skipkeys[, ensure_ascii[, check_circular[, allow_nan[, cls[, indent[, separators[, encoding[, default[, **kw]]]]]]]]]])
Serialize *obj* as a JSON formatted stream to *fp* (a
``.write()``-supporting
file-like object).
Serialize *obj* as a JSON formatted stream to *fp* (a ``.write()``-supporting
file-like object).
If *skipkeys* is ``True`` (It is ``False`` by default.), then ``dict`` keys
that are not basic types (``str``, ``unicode``, ``int``, ``long`
`,
``float``, ``bool`
`, ``None``) will be skipped instead of raising a
If *skipkeys* is ``True`` (default: ``False``), then dict keys that are not
of a basic type (:class:`str`, :class:`unicode`, :class:`int`, :class:`long
`,
:class:`float`, :class:`bool
`, ``None``) will be skipped instead of raising a
:exc:`TypeError`.
If *ensure_ascii* is ``False`` (It is ``True`` by default.), then the some
chunks written to *fp* may be ``unicode`` instances, subject to normal
Python ``str`` to ``unicode`` coercion rules.
Unless ``fp.write()``
explicitly understands ``unicode`` (as in ``codecs.getwriter()``) this
is
likely to cause an error.
If *ensure_ascii* is ``False`` (default: ``True``), then some chunks written
to *fp* may be :class:`unicode` instances, subject to normal Python
:class:`str` to :class:`unicode` coercion rules.
Unless ``fp.write()``
explicitly understands :class:`unicode` (as in :func:`codecs.getwriter`) th
is
is
likely to cause an error.
If *check_circular* is ``False``, then the circular reference check fo
r
container types will be skipped and a circular reference will result in an
:exc:`OverflowError` (or worse).
If *check_circular* is ``False`` (default: ``True``), then the circula
r
reference check for container types will be skipped and a circular reference
will result in an
:exc:`OverflowError` (or worse).
If *allow_nan* is ``False``, then it will be a :exc:`ValueError` to
serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``) in
strict compliance of the JSON specification, instead of using the JavaScript
equivalents (``NaN``, ``Infinity``, ``-Infinity``).
If *allow_nan* is ``False`` (default: ``True``), then it will be a
:exc:`ValueError` to serialize out of range :class:`float` values (``nan``,
``inf``, ``-inf``) in strict compliance of the JSON specification, instead of
using the JavaScript
equivalents (``NaN``, ``Infinity``, ``-Infinity``).
If *indent* is a non-negative integer, then JSON array elements and object
members will be pretty-printed with that indent level. An indent level of 0
will only insert newlines. ``None`` is the most compact representation.
will only insert newlines. ``None`` (the default) selects the most compact
representation.
If *separators* is an ``(item_separator, dict_separator)`` tuple
then it
If *separators* is an ``(item_separator, dict_separator)`` tuple,
then it
will be used instead of the default ``(', ', ': ')`` separators. ``(',',
':')`` is the most compact JSON representation.
*encoding* is the character encoding for str instances, default is UTF-8.
*default(obj)* is a function that should return a serializable version of
obj or raise :exc:`TypeError`.
The default simply raises :exc:`TypeError`.
*obj* or raise :exc:`TypeError`.
The default simply raises :exc:`TypeError`.
To use a custom :class:`JSONEncoder`` subclass (e.g. one that overrides the
``.default()`
` method to serialize additional types), specify it with the
:meth:`default
` method to serialize additional types), specify it with the
*cls* kwarg.
.. function:: dump(obj[, skipkeys[, ensure_ascii[, check_circular[, allow_nan[, cls[, indent[, separators[, encoding[, default[, **kw]]]]]]]]]])
.. function:: dump
s
(obj[, skipkeys[, ensure_ascii[, check_circular[, allow_nan[, cls[, indent[, separators[, encoding[, default[, **kw]]]]]]]]]])
Serialize *obj* to a JSON formatted ``str`
`.
Serialize *obj* to a JSON formatted :class:`str
`.
If *skipkeys* is ``True`` (It is ``False`` by default.), then ``dict`` keys
that are not basic types (``str``, ``unicode``, ``int``, ``long``,
``float``, ``bool``, ``None``) will be skipped instead of raising a
:exc:`TypeError`.
If *ensure_ascii* is ``False``, then the return value will be a ``unicode``
instance subject to normal Python ``str`` to ``unicode`` coercion rules
instead of being escaped to an ASCII ``str``.
If *check_circular* is ``False``, then the circular reference check for
container types will be skipped and a circular reference will result in an
:exc:`OverflowError` (or worse).
If *allow_nan* is ``False``, then it will be a :exc:`ValueError` to
serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``) in
strict compliance of the JSON specification, instead of using the JavaScript
equivalents (``NaN``, ``Infinity``, ``-Infinity``).
If *ensure_ascii* is ``False``, then the return value will be a
:class:`unicode` instance. The other arguments have the same meaning as in
:func:`dump`.
If *indent* is a non-negative integer, then JSON array elements and object
members will be pretty-printed with that indent level. An indent level of 0
will only insert newlines. ``None`` is the most compact representation.
If *separators* is an ``(item_separator, dict_separator)`` tuple then it
will be used instead of the default ``(', ', ': ')`` separators. ``(',',
':')`` is the most compact JSON representation.
*encoding* is the character encoding for str instances, default is UTF-8.
*default(obj)* is a function that should return a serializable version of
obj or raise :exc:`TypeError`. The default simply raises :exc:`TypeError`.
To use a custom :class:`JSONEncoder`` subclass (e.g. one that overrides the
``.default()`` method to serialize additional types), specify it with the
*cls* kwarg.
.. function loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, **kw]]]]]]])
.. function load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, **kw]]]]]]])
Deserialize *
s* (a ``str`` or ``unicode`` instance
containing a JSON
Deserialize *
fp* (a ``.read()``-supporting file-like object
containing a JSON
document) to a Python object.
If *s* is a ``str`` instance and is encoded with an ASCII based encoding
other than utf-8 (e.g. latin-1) then an appropriate ``encoding`` name must be
specified. Encodings that are not ASCII based (such as UCS-2) are not allowed
and should be decoded to ``unicode`` first.
If the contents of *fp* are encoded with an ASCII based encoding other than
UTF-8 (e.g. latin-1), then an appropriate *encoding* name must be specified.
Encodings that are not ASCII based (such as UCS-2) are not allowed, and
should be wrapped with ``codecs.getreader(fp)(encoding)``, or simply decoded
to a :class:`unicode` object and passed to :func:`loads`.
*object_hook* is an optional function that will be called with the result of
any object literal decode (a
``dict``). The return value of ``object_hook``
will be used instead of the ``dict``. This feature can be used to implement
custom decoders (e.g. JSON-RPC class hinting).
any object literal decode (a
:class:`dict`). The return value of
*object_hook* will be used instead of the :class:`dict`. This feature can be used
to implement
custom decoders (e.g. JSON-RPC class hinting).
*parse_float*, if specified, will be called with the string of every JSON
float to be decoded.
By default, this is equivalent to
``float(num_str)``. This can be used to use another datatype or parser for
JSON floats (e.g. decimal.Decimal
).
float to be decoded.
By default, this is equivalent to ``float(num_str)``.
This can be used to use another datatype or parser for JSON floats
(e.g. :class:`decimal.Decimal`
).
*parse_int*, if specified, will be called with the string of every JSON int
to be decoded. By default this is equivalent to int(num_str). This can be
used to use another datatype or parser for JSON integers (e.g. float).
to be decoded. By default, this is equivalent to ``int(num_str)``. This can
be used to use another datatype or parser for JSON integers
(e.g. :class:`float`).
*parse_constant*, if specified, will be called with one of the following
strings: -Infinity, Infinity, NaN, null, true, false. This can be used to
raise an exception if invalid JSON numbers are encountered.
strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``, ``'null'``, ``'true'``,
``'false'``. This can be used to raise an exception if invalid JSON numbers
are encountered.
To use a custom :class:`JSONDecoder` subclass, specify it with the ``cls``
kwarg. Additional keyword arguments will be passed to the constructor of the
class.
.. function load
(fp
[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, **kw]]]]]]])
.. function load
s(s
[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, **kw]]]]]]])
Deserialize *
fp* (a ``.read()``-supporting file-like object
containing a JSON
Deserialize *
s* (a :class:`str` or :class:`unicode` instance
containing a JSON
document) to a Python object.
If
the contents of *fp* is encoded with an ASCII based encoding other than
utf-8 (e.g. latin-1), then an appropriate ``encoding``
name must be
If
*s* is a :class:`str` instance and is encoded with an ASCII based encoding
other than UTF-8 (e.g. latin-1), then an appropriate *encoding*
name must be
specified. Encodings that are not ASCII based (such as UCS-2) are not
allowed, and should be wrapped with :func:`codecs.getreader(fp)(encoding)`,
or simply decoded to a ``unicode`` object and passed to ``loads()``
allowed and should be decoded to :class:`unicode` first.
*object_hook* is an optional function that will be called with the result of
any object literal decode (a ``dict``). The return value of *object_hook*
will be used instead of the ``dict``. This feature can be used to implement
custom decoders (e.g. JSON-RPC class hinting).
To use a custom :class:`JSONDecoder` subclass, specify it with the ``cls``
kwarg. Additional keyword arguments will be passed to the constructor of the
class.
The other arguments have the same meaning as in :func:`dump`.
Encoders and decoders
...
...
@@ -255,7 +220,7 @@ Encoders and decoders
.. class:: JSONDecoder([encoding[, object_hook[, parse_float[, parse_int[, parse_constant[, strict]]]]]])
Simple JSON decoder
Simple JSON decoder
.
Performs the following translations in decoding by default:
...
...
@@ -282,42 +247,44 @@ Encoders and decoders
It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as their
corresponding ``float`` values, which is outside the JSON spec.
*encoding* determines the encoding used to interpret any
``str`
` objects
decoded by this instance (
utf
-8 by default). It has no effect when decoding
``unicode`
` objects.
*encoding* determines the encoding used to interpret any
:class:`str
` objects
decoded by this instance (
UTF
-8 by default). It has no effect when decoding
:class:`unicode
` objects.
Note that currently only encodings that are a superset of ASCII work,
strings of other encodings should be passed in as ``unicode`
`.
Note that currently only encodings that are a superset of ASCII work,
strings
of other encodings should be passed in as :class:`unicode
`.
*object_hook*, if specified, will be called with the result of every JSON
object decoded and its return value will be used in place of the given
``dict`
`. This can be used to provide custom deserializations (e.g. to
:class:`dict
`. This can be used to provide custom deserializations (e.g. to
support JSON-RPC class hinting).
*parse_float*, if specified, will be called with the string of every JSON
float to be decoded.
By default this is equivalent to float(num_str). This
can be used to use another datatype or parser for JSON floats
(e.g.
decimal.Decimal
).
float to be decoded.
By default, this is equivalent to ``float(num_str)``.
This
can be used to use another datatype or parser for JSON floats
(e.g.
:class:`decimal.Decimal`
).
*parse_int*, if specified, will be called with the string of every JSON int
to be decoded. By default this is equivalent to int(num_str). This can be
used to use another datatype or parser for JSON integers (e.g. float).
to be decoded. By default, this is equivalent to ``int(num_str)``. This can
be used to use another datatype or parser for JSON integers
(e.g. :class:`float`).
*parse_constant*, if specified, will be called with one of the following
strings: -Infinity, Infinity, NaN, null, true, false. This can be used to
raise an exception if invalid JSON numbers are encountered.
strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``, ``'null'``, ``'true'``,
``'false'``. This can be used to raise an exception if invalid JSON numbers
are encountered.
.. method:: decode(s)
Return the Python representation of *s* (a ``str`` or ``unicode`` instance
containing a JSON document)
Return the Python representation of *s* (a :class:`str` or
:class:`unicode` instance
containing a JSON document)
.. method:: raw_decode(s)
Decode a JSON document from *s* (a ``str`` or ``unicode`` beginning with a
JSON document) and return a 2-tuple of the Python representation and the
index in *s* where the document ended.
Decode a JSON document from *s* (a :class:`str` or :class:`unicode`
beginning with a JSON document) and return a 2-tuple of the Python
representation and the
index in *s* where the document ended.
This can be used to decode a JSON document from a string that may have
extraneous data at the end.
...
...
@@ -325,7 +292,7 @@ Encoders and decoders
.. class:: JSONEncoder([skipkeys[, ensure_ascii[, check_circular[, allow_nan[, sort_keys[, indent[, separators[, encoding[, default]]]]]]]]])
Extensible JSON
<http://json.org>
encoder for Python data structures.
Extensible JSON encoder for Python data structures.
Supports the following objects and types by default:
...
...
@@ -348,7 +315,7 @@ Encoders and decoders
+-------------------+---------------+
To extend this to recognize other objects, subclass and implement a
``.default()`
` method with another method that returns a serializable object
:meth:`default
` method with another method that returns a serializable object
for ``o`` if possible, otherwise it should call the superclass implementation
(to raise :exc:`TypeError`).
...
...
@@ -356,31 +323,32 @@ Encoders and decoders
attempt encoding of keys that are not str, int, long, float or None. If
*skipkeys* is ``True``, such items are simply skipped.
If *ensure_ascii* is ``True``
, the output is guaranteed to be ``str`` objects
with all incoming unicode characters escaped. If *ensure_ascii* is
``False``, the output will be
unicode object.
If *ensure_ascii* is ``True``
(the default), the output is guaranteed to be
:class:`str` objects with all incoming unicode characters escaped. If
*ensure_ascii* is ``False``, the output will be a
unicode object.
If *check_circular* is ``True`` (the default), then lists, dicts, and custom
encoded objects will be checked for circular references during encoding to
prevent an infinite recursion (which would cause an :exc:`OverflowError`).
Otherwise, no such check takes place.
If *allow_nan* is ``True`` (the default), then ``NaN``, ``Infinity``, and ``-Infinity``
will be encoded as such. This behavior is not JSON specification compliant,
but is consistent with most JavaScript based encoders and decoders.
Otherwise, it will be a :exc:`ValueError` to encode such floats.
If *allow_nan* is ``True`` (the default), then ``NaN``, ``Infinity``, and
``-Infinity`` will be encoded as such. This behavior is not JSON
specification compliant, but is consistent with most JavaScript based
encoders and decoders. Otherwise, it will be a :exc:`ValueError` to encode
such floats.
If *sort_keys* is ``True`` (the default), then the output of dictionaries
will be sorted by key; this is useful for regression tests to ensure that
JSON serializations can be compared on a day-to-day basis.
If *indent* is a non-negative integer (
It is ``None`` by default.
), then JSON
If *indent* is a non-negative integer (
it is ``None`` by default
), then JSON
array elements and object members will be pretty-printed with that indent
level. An indent level of 0 will only insert newlines. ``None`` is the most
compact representation.
If specified, *separators* should be a
(item_separator, key_separator) tuple.
The default is ``(', ', ': ')``. To get the most compact JSON
If specified, *separators* should be a
n ``(item_separator, key_separator)``
tuple.
The default is ``(', ', ': ')``. To get the most compact JSON
representation, you should specify ``(',', ':')`` to eliminate whitespace.
If specified, *default* is a function that gets called for objects that can't
...
...
@@ -423,9 +391,7 @@ Encoders and decoders
.. method:: iterencode(o)
Encode the given object, *o*, and yield each string representation as
available.
For example::
available. For example::
for chunk in JSONEncoder().iterencode(bigobject):
mysocket.write(chunk)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment