以JSON为核心的Python对象序列化
xtelligent-serial的Python项目详细描述
序列化+JSON
概要
这个库的目的是在Python原语之间序列化对象。也就是说,
对象将表示为dict、list、int、float、bool、str和None。结果
可以使用python.json
或此库轻松地将原语序列化为JSON。在
因为这个库侧重于用本机原语表示,所以它可能很有用 用于序列化为其他格式。在
使用
库使用decorators
来标记负责序列化的方法。有一个
serializer
将函数与序列化特定类型相关联的修饰符,以及
有一个对应的deserializer
:
@serializer(datetime)defdthandler(dt:datetime):returndt.isoformat()@deserializer(datetime)defstr2dt(datestr:str):returndatetime.fromisoformat(datestr)
最后,该库实现了一个serialization
装饰器,使一个类负责
序列化自身。请看
example来说明。在
xtelligent_serial.json
名称空间包括两种方便的读写方法
来自JSON。记录了from_json
和{
自动dataclass
支持
Python的dataclass
和frozen
选项创建了一个NamedTuple
的粗略等价物,但是
可能仍然添加方法和属性。不变性是创建可测试性的一个很好的实践,
可读代码。冻结的dataclass
不会获得常见的“无限状态机”行为
面向对象的类设计。创建完整的理由超出了本文件的范围
在这个问题上有大量的材料。很明显
dataclass
很好地映射到JSON文档。dataclass
类型的一致结构使它
这个库可以直接自动支持这些类,而不需要修饰符。唯一的
需要注意的是,所有成员属性类型都必须由decorator支持,否则它们也必须支持
基本类型或dataclass
类型。再次,请看
example来说明。在
文件
示例
- 一般示例: Source Code
- attrs第三方库的使用示例: Source Code
路线图
- 与
json.JSONDecoder
和json.JSONEncoder
集成。目前,这个模块是一个替代方案 到json
模块。在 - 装饰器上的序列化方便方法。在
- 支持自动反序列化。现在,它需要传递一个参数 要反序列化到的类型。在
- 研究NamedTuple的自动支持。在
- 项目
标签: