Skip to content

Instantly share code, notes, and snippets.

@iisaka51
Created October 25, 2022 05:29
Show Gist options
  • Save iisaka51/16b985925df9c553d14831fea80eace8 to your computer and use it in GitHub Desktop.
Save iisaka51/16b985925df9c553d14831fea80eace8 to your computer and use it in GitHub Desktop.
add custom class serializer example
import datetime
from datajuggler.serializer.abstract import (
AbstractClassSerializer, register_serializer
)
from datajuggler.validator import TypeValidator as _type
class DatetimeClassSerializer(io.AbstractClassSerializer):
def __init__(self, cls=datetime.datetime):
super().__init__(cls)
def encode(self, obj):
if _type.is_datetime(obj):
return {
"__type__": "datetime",
"value": [
obj.year,
obj.month,
obj.day,
obj.hour,
obj.minute,
obj.second,
],
}
else:
super().encode(obj)
def decode(self, obj):
v = obj.get("__type__")
if v == "datetime":
return datetime.datetime(*obj["value"])
self.raise_error(obj)
register_serializer(DatetimeClassSerializer)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment