htcollector.Utils
DatetimeEncoder
— Extensible JSON http://json.org encoder for Python data structures.</>
htcollector.Utils.
DatetimeEncoder
(
skipkeys=False
, ensure_ascii=True
, check_circular=True
, allow_nan=True
, sort_keys=False
, indent=None
, separators=None
, default=None
)
Extensible JSON http://json.org encoder for Python data structures.
Supports the following objects and types by default:
+-------------------+---------------+ | Python | JSON | +===================+===============+ | dict | object | +-------------------+---------------+ | list, tuple | array | +-------------------+---------------+ | str | string | +-------------------+---------------+ | int, 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
).
default
(
obj
)
— Implement this method in a subclass such that it returns a serializable object foro
, or calls the base implementation (to raise aTypeError
).</>encode
(
o
)
— Return a JSON string representation of a Python data structure.</>iterencode
(
o
,_one_shot
)
— Encode the given object and yield each string representation as available.</>
encode
(
o
)
Return a JSON string representation of a Python data structure.
>>> from json.encoder import JSONEncoder
>>> JSONEncoder().encode({"foo": ["bar", "baz"]})
'{"foo": ["bar", "baz"]}'
iterencode
(
o
, _one_shot=False
)
Encode the given object and yield each string representation as available.
For example::
for chunk in JSONEncoder().iterencode(bigobject):
mysocket.write(chunk)
default
(
obj
)
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):
try:
iterable = iter(o)
except TypeError:
pass
else:
return list(iterable)
# Let the base class default method raise the TypeError
return JSONEncoder.default(self, o)