Skip to content

Instantly share code, notes, and snippets.

@codekoriko
Last active May 13, 2021 03:24
Show Gist options
  • Save codekoriko/6b02babbecbd9ec5492f57c968918d83 to your computer and use it in GitHub Desktop.
Save codekoriko/6b02babbecbd9ec5492f57c968918d83 to your computer and use it in GitHub Desktop.
json datetime encoder
class DateTimeEncoder(json.JSONEncoder):
def _preprocess_date(self, obj):
if isinstance(obj, (datetime.date, datetime.datetime, datetime.timedelta)):
return str(obj)
elif isinstance(obj, dict):
return {self._preprocess_date(k): self._preprocess_date(v) for k,v in obj.items()}
elif isinstance(obj, list):
return [self._preprocess_date(i) for i in obj]
return obj
def default(self, obj):
if isinstance(obj, (datetime.date, datetime.datetime, datetime.timedelta)):
return str(obj)
return super().default(obj)
def iterencode(self, obj):
return super().iterencode(self._preprocess_date(obj))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment