Skip to content

Latest commit

 

History

History
27 lines (22 loc) · 740 Bytes

custom-class-serializer.md

File metadata and controls

27 lines (22 loc) · 740 Bytes

Custom class (de)serializer

If you want to provide (de)serializer at class level, you can pass your functions to serializer and deserializer class attributes.

def serializer(cls, o):
    if cls is datetime:
        return o.strftime('%d/%m/%y')
    else:
        raise SerdeSkip()

def deserializer(cls, o):
    if cls is datetime:
        return datetime.strptime(o, '%d/%m/%y')
    else:
        raise SerdeSkip()

@deserialize(deserializer=deserializer)
@serialize(serializer=serializer)
@dataclass
class Foo:
    i: int
    dt1: datetime
    dt2: datetime

For complete example, please see examples/custom_class_serializer.py