pyserde
Yet another serialization library on top of dataclasses.
Overview
Declare a class with pyserde's @serialize
and @deserialize
decorators.
@deserialize
@serialize
@dataclass
class Foo:
i: int
s: str
f: float
b: bool
You can serialize Foo
object into JSON.
>>> to_json(Foo(i=10, s='foo', f=100.0, b=True))
{"i": 10, "s": "foo", "f": 100.0, "b": true}
You can deserialize JSON into Foo
object.
>>> from_json(Foo, '{"i": 10, "s": "foo", "f": 100.0, "b": true}')
Foo(i=10, s='foo', f=100.0, b=True)
Features
- Supported data formats
- JSON
- Yaml
- Toml
- MsgPack
- Supported types
- Primitives (
int
,float
,str
,bool
) - Containers (
List
,Set
,Tuple
,Dict
) typing.Optional
typing.Union
- User defined class with
@dataclass
typing.NewType
for primitive typestyping.Any
Enum
andIntEnum
- Standard library
- Primitives (
- Python 3.9 type hiting
- Postponed evaluation of type annotation
- Forward reference
- Case Conversion
- Rename
- Skip
- Conditional Skip
- Custom field (de)serializer
- Custom class (de)serializer
- Flatten
LICENSE
This project is licensed under the MIT license.