以JSON为核心的Python对象序列化

xtelligent-serial的Python项目详细描述


序列化+JSON

Lint+Test

概要

这个库的目的是在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和{}函数 here。这个 函数用序列化修饰符序列化代码支持的类型。在

自动dataclass支持

Python的dataclassfrozen选项创建了一个NamedTuple的粗略等价物,但是 可能仍然添加方法和属性。不变性是创建可测试性的一个很好的实践, 可读代码。冻结的dataclass不会获得常见的“无限状态机”行为 面向对象的类设计。创建完整的理由超出了本文件的范围 在这个问题上有大量的材料。很明显 dataclass很好地映射到JSON文档。dataclass类型的一致结构使它 这个库可以直接自动支持这些类,而不需要修饰符。唯一的 需要注意的是,所有成员属性类型都必须由decorator支持,否则它们也必须支持 基本类型或dataclass类型。再次,请看 example来说明。在

文件

API Reference

示例

路线图

  • json.JSONDecoderjson.JSONEncoder集成。目前,这个模块是一个替代方案 到json模块。在
  • 装饰器上的序列化方便方法。在
  • 支持自动反序列化。现在,它需要传递一个参数 要反序列化到的类型。在
  • 研究NamedTuple的自动支持。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
来自偏移量的java JavaPairInputStream流   gzip Java TarInputStream读取tar的文件名。包含另一个tar的gz文件。gz文件   如何在Linux shell脚本中确定和使用实际的java路径   java请求太多FirebaseError   java错误json解析   java在localserver上发送安卓应用程序的输出   JavaSpring:启动和停止webapplication时更新DBtable条目   java如何使用JavaFX在矩形处设置文本?   java SQL查询在Hibernate中出现异常   java我无法使用javamail代码通过outlook(hotmail帐户)配置发送邮件,但在gmail中工作正常   java是不同的持久性。测试运行/JPA装置的xml属性   无头Eclipse的java导出战   使用ContentVersionStrategy的java Spring引导缓存禁止使用gzip进行资源压缩   java如何获取计算机的设备令牌?   图像文件的java ImageInfo不包含有效值   继承强制在Java中使用基类方法