One of the most frequent needs when working with web-based solutions is parsing and speaking JSON. Python has built-in support for XML and HTML, but also for JSON encoding and decoding.
The JSON encoder can also be specialized to handle non-standard types, such as dates.
For this recipe, the following steps are to be performed:
- The
JSONEncoder
andJSONDecoder
classes can be specialized to implement custom encoding and decoding behaviors:
import json import datetime import decimal import types class CustomJSONEncoder(json.JSONEncoder): """JSON Encoder with support for additional types. Supports dates, times, decimals, generators and any custom class that implements __json__ method. """ def default(self, obj): if hasattr(obj, '__json__') and callable(obj.__json__): return obj.__json__() elif isinstance(obj, (datetime.datetime, datetime.time)): return obj.replace(microsecond=0).isoformat() elif isinstance...