Serializing Complex Python Objects to JSON with Custom Encoders
The json module handles only a fixed set of Python types. To serialize complex numbers, dates, paths, or user-defined classes you must supply a default function or subclass JSONEncoder, then pair the output with object_hook on the decode side.
json / serialization / JSONEncoder / default / object_hook / python-standard-library / datetime / complex