Serialize dates and times to isoformat (#58157)

This commit is contained in:
Erik Montnemery
2021-10-27 19:51:38 +02:00
committed by GitHub
parent ced89d8f29
commit abb84d9756
2 changed files with 26 additions and 21 deletions

View File

@ -1,5 +1,5 @@
"""Helpers to help with encoding Home Assistant objects in JSON."""
from datetime import datetime, timedelta
import datetime
import json
from typing import Any
@ -12,7 +12,7 @@ class JSONEncoder(json.JSONEncoder):
Hand other objects to the original method.
"""
if isinstance(o, datetime):
if isinstance(o, datetime.datetime):
return o.isoformat()
if isinstance(o, set):
return list(o)
@ -30,8 +30,12 @@ class ExtendedJSONEncoder(JSONEncoder):
Fall back to repr(o).
"""
if isinstance(o, timedelta):
if isinstance(o, datetime.timedelta):
return {"__type": str(type(o)), "total_seconds": o.total_seconds()}
if isinstance(o, datetime.datetime):
return o.isoformat()
if isinstance(o, (datetime.date, datetime.time)):
return {"__type": str(type(o)), "isoformat": o.isoformat()}
try:
return super().default(o)
except TypeError: