Public Member Functions | Public Attributes | Static Public Attributes | List of all members
aestate.ajson.sim.encoder.JSONEncoder Class Reference
Inheritance diagram for aestate.ajson.sim.encoder.JSONEncoder:
Inheritance graph
Collaboration diagram for aestate.ajson.sim.encoder.JSONEncoder:
Collaboration graph

Public Member Functions

def __init__ (self, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, encoding='utf-8', default=None, use_decimal=True, namedtuple_as_object=True, tuple_as_array=True, bigint_as_string=False, item_sort_key=None, for_json=False, ignore_nan=False, int_as_string_bitcount=None, iterable_as_array=False)
def default (self, o)
def encode (self, o)
def iterencode (self, o, _one_shot=False)

Public Attributes


Static Public Attributes

string item_separator = ', '
string key_separator = ': '

Detailed Description

Extensible JSON <> encoder for Python data structures.

Supports the following objects and types by default:

| Python            | JSON          |
| dict, namedtuple  | object        |
| list, tuple       | array         |
| str, unicode      | string        |
| int, long, float  | number        |
| True              | true          |
| False             | false         |
| None              | null          |

To extend this to recognize other objects, subclass and implement a
``.default()`` method with another method that returns a serializable
object for ``o`` if possible, otherwise it should call the superclass
implementation (to raise ``TypeError``).

Definition at line 109 of file

Constructor & Destructor Documentation

◆ __init__()

def aestate.ajson.sim.encoder.JSONEncoder.__init__ (   self,
  skipkeys = False,
  ensure_ascii = True,
  check_circular = True,
  allow_nan = True,
  sort_keys = False,
  indent = None,
  separators = None,
  encoding = 'utf-8',
  default = None,
  use_decimal = True,
  namedtuple_as_object = True,
  tuple_as_array = True,
  bigint_as_string = False,
  item_sort_key = None,
  for_json = False,
  ignore_nan = False,
  int_as_string_bitcount = None,
  iterable_as_array = False 
Constructor for JSONEncoder, with sensible defaults.

If skipkeys is false, then it is a TypeError to 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 check_circular is true, then lists, dicts, and custom encoded
objects will be checked for circular references during encoding to
prevent an infinite recursion (which would cause an OverflowError).
Otherwise, no such check takes place.

If allow_nan is true, 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 ValueError to encode such floats.

If sort_keys is true, 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 string, then JSON array elements and object members
will be pretty-printed with a newline followed by that string repeated
for each level of nesting. ``None`` (the default) selects the most compact
representation without any newlines. For backwards compatibility with
versions of simplejson earlier than 2.1.0, an integer is also accepted
and is converted to a string with that many spaces.

If specified, separators should be an (item_separator, key_separator)
tuple.  The default is (', ', ': ') if *indent* is ``None`` and
(',', ': ') otherwise.  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 otherwise be serialized.  It should return a JSON encodable
version of the object or raise a ``TypeError``.

If encoding is not None, then all input strings will be
transformed into unicode using that encoding prior to JSON-encoding.
The default is UTF-8.

If use_decimal is true (default: ``True``), ``decimal.Decimal`` will
be supported directly by the encoder. For the inverse, decode JSON
with ``parse_float=decimal.Decimal``.

If namedtuple_as_object is true (the default), objects with
``_asdict()`` methods will be encoded as JSON objects.

If tuple_as_array is true (the default), tuple (and subclasses) will
be encoded as JSON arrays.

If *iterable_as_array* is true (default: ``False``),
any object not in the above table that implements ``__iter__()``
will be encoded as a JSON array.

If bigint_as_string is true (not the default), ints 2**53 and higher
or lower than -2**53 will be encoded as strings. This is to avoid the
rounding that happens in Javascript otherwise.

If int_as_string_bitcount is a positive number (n), then int of size
greater than or equal to 2**n or lower than or equal to -2**n will be
encoded as strings.

If specified, item_sort_key is a callable used to sort the items in
each dictionary. This is useful if you want to sort items other than
in alphabetical order by key.

If for_json is true (not the default), objects with a ``for_json()``
method will use the return value of that method for encoding as JSON
instead of the object.

If *ignore_nan* is true (default: ``False``), then out of range
:class:`float` values (``nan``, ``inf``, ``-inf``) will be serialized
as ``null`` in compliance with the ECMA-262 specification. If true,
this will override *allow_nan*.

Definition at line 141 of file

Member Function Documentation

◆ default()

def aestate.ajson.sim.encoder.JSONEncoder.default (   self,
Implement this method in a subclass such that it returns
a serializable object for ``o``, or calls the base implementation
(to raise a ``TypeError``).

For example, to support arbitrary iterators, you could
implement default like this::

    def default(self, o):
    iterable = iter(o)
except TypeError:
    return list(iterable)
return JSONEncoder.default(self, o)

Definition at line 254 of file

◆ encode()

def aestate.ajson.sim.encoder.JSONEncoder.encode (   self,
Return a JSON string representation of a Python data structure.

>>> from simplejson import JSONEncoder
>>> JSONEncoder().encode({"foo": ["bar", "baz"]})
'{"foo": ["bar", "baz"]}'

Reimplemented in aestate.ajson.sim.encoder.JSONEncoderForHTML.

Definition at line 275 of file

Here is the call graph for this function:

◆ iterencode()

def aestate.ajson.sim.encoder.JSONEncoder.iterencode (   self,
  _one_shot = False 
Encode the given object and yield each string
representation as available.

For example::

    for chunk in JSONEncoder().iterencode(bigobject):

Reimplemented in aestate.ajson.sim.encoder.JSONEncoderForHTML.

Definition at line 304 of file

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ allow_nan


Definition at line 226 of file

◆ bigint_as_string


Definition at line 232 of file

◆ check_circular


Definition at line 225 of file

◆ default


Definition at line 245 of file

◆ encoding


Definition at line 246 of file

◆ ensure_ascii


Definition at line 224 of file

◆ for_json


Definition at line 234 of file

◆ ignore_nan


Definition at line 235 of file

◆ indent


Definition at line 239 of file

◆ int_as_string_bitcount


Definition at line 236 of file

◆ item_separator [1/2]

string aestate.ajson.sim.encoder.JSONEncoder.item_separator = ', '

Definition at line 138 of file

◆ item_separator [2/2]


Definition at line 243 of file

◆ item_sort_key


Definition at line 233 of file

◆ iterable_as_array


Definition at line 231 of file

◆ key_separator [1/2]

string aestate.ajson.sim.encoder.JSONEncoder.key_separator = ': '

Definition at line 139 of file

◆ key_separator [2/2]


Definition at line 241 of file

◆ namedtuple_as_object


Definition at line 229 of file

◆ skipkeys


Definition at line 223 of file

◆ sort_keys


Definition at line 227 of file

◆ tuple_as_array


Definition at line 230 of file

◆ use_decimal


Definition at line 228 of file

The documentation for this class was generated from the following file: