mirror of
https://github.com/home-assistant/core.git
synced 2025-07-29 18:28:14 +02:00
Serialize dates and times to isoformat (#58157)
This commit is contained in:
@ -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:
|
||||
|
Reference in New Issue
Block a user