Skip to content

Commit

Permalink
[1.9.x] Fixed #26704 -- Documented DjangoJSONEncoder.
Browse files Browse the repository at this point in the history
Backport of 729b945 from master
  • Loading branch information
tbeadle authored and timgraham committed Jun 7, 2016
1 parent df43823 commit d22bac9
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 4 deletions.
2 changes: 1 addition & 1 deletion docs/ref/request-response.txt
Original file line number Diff line number Diff line change
Expand Up @@ -936,7 +936,7 @@ types of HTTP responses. Like ``HttpResponse``, these subclasses live in
JSON-serializable object.

The ``encoder``, which defaults to
``django.core.serializers.json.DjangoJSONEncoder``, will be used to
:class:`django.core.serializers.json.DjangoJSONEncoder`, will be used to
serialize the data. See :ref:`JSON serialization
<serialization-formats-json>` for more details about this serializer.

Expand Down
28 changes: 25 additions & 3 deletions docs/topics/serialization.txt
Original file line number Diff line number Diff line change
Expand Up @@ -253,9 +253,6 @@ Foreign keys just have the PK of the linked object as property value.
ManyToMany-relations are serialized for the model that defines them and are
represented as a list of PKs.

Date and datetime related types are treated in a special way by the JSON
serializer to make the format compatible with `ECMA-262`_.

Be aware that not all Django output can be passed unmodified to :mod:`json`.
In particular, :ref:`lazy translation objects <lazy-translations>` need a
custom :mod:`json` encoder. Something like this will work::
Expand All @@ -273,6 +270,31 @@ custom :mod:`json` encoder. Something like this will work::
Also note that GeoDjango provides a :doc:`customized GeoJSON serializer
</ref/contrib/gis/serializers>`.

``DjangoJSONEncoder``
~~~~~~~~~~~~~~~~~~~~~

.. class:: django.core.serializers.json.DjangoJSONEncoder

The JSON serializer uses ``DjangoJSONEncoder`` for encoding. A subclass of
:class:`~json.JSONEncoder`, it handles these additional types:

:class:`~datetime.datetime`
A string of the form ``YYYY-MM-DDTHH:mm:ss.sssZ`` or
``YYYY-MM-DDTHH:mm:ss.sss+HH:MM`` as defined in `ECMA-262`_.

:class:`~datetime.date`
A string of the form ``YYYY-MM-DD`` as defined in `ECMA-262`_.

:class:`~datetime.time`
A string of the form ``HH:MM:ss.sss`` as defined in `ECMA-262`_.

:class:`~decimal.Decimal`, :class:`~uuid.UUID`
A string representation of the object.

.. versionchanged:: 1.8.4

Support for :class:`~uuid.UUID` was added.

.. _ecma-262: http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15

YAML
Expand Down

0 comments on commit d22bac9

Please sign in to comment.