By default, only dictionary objects can be serialized in Django JSON-encoded response. Before ECMASCript 5, serializing non-dictionary objects
could lead to security vulnerabilities. Since most modern browsers implement ECMAScript 5, this vector of attack is no longer a threat and it is
possible to serialize non-dictionary objects by setting the safe
flag to False
. However, if this flag is not set, a
TypeError
will be thrown by the serializer.
Despite this possibility, it is still recommended to serialize dictionary objects, as an API based on dict
is generally more
extensible and easier to maintain.