跳转到主要内容

使用functools.singledispatch的Python自定义JSON编码器,支持为Python的内置类和用户创建的类提供自定义编码器,无需过多繁琐的操作。

项目描述

使用functools.singledispatch的Python自定义JSON编码器,支持为Python的内置类和用户创建的类提供自定义编码器,无需过多繁琐的操作。

文档

Documentation Build Status Docs Check Status

测试

Linux Test Status Windows Test Status macOS Test Status Coverage

PyPI

PyPI - Package Version PyPI - Supported Python Versions PyPI - Supported Implementations PyPI - Wheel

Anaconda

Conda - Package Version Conda - Platform

活动

GitHub last commit GitHub commits since tagged version Maintenance PyPI - Downloads

QA

CodeFactor Grade Flake8 Status mypy status

其他

License GitHub top language Requirements Status


用法

创建和注册自定义编码器就像

>>> import sdjson
>>>
>>> @sdjson.dump.register(MyClass)
>>> def encode_myclass(obj):
...     return dict(obj)
>>>

在这种情况下,MyClass可以通过调用dict()使其可JSON序列化。如果您的类需要更复杂的逻辑来使其可JSON序列化,请在这里完成。

然后,将对象转储为字符串

>>> class_instance = MyClass()
>>> print(sdjson.dumps(class_instance))
'{"menu": ["egg and bacon", "egg sausage and bacon", "egg and spam", "egg bacon and spam"],
"today\'s special": "Lobster Thermidor au Crevette with a Mornay sauce served in a Provencale
manner with shallots and aubergines garnished with truffle pate, brandy and with a fried egg
on top and spam."}'
>>>

或将数据转储到文件

>>> with open("spam.json", "w") as fp:
...     sdjson.dumps(class_instance, fp)
...
>>>

sdjson 还提供了对 json 模块中的 loadloadsJSONDecoderJSONDecodeErrorJSONEncoder 的访问,允许您将 sdjson 作为 json 的直接替代品使用。

如果您想在不使用自定义编码器的情况下转储对象,您可以传递一个不同的 JSONEncoder 子类,或者直接传递 JSONEncoder 本身以获取标准功能。

>>> sdjson.dumps(class_instance, cls=sdjson.JSONEncoder)
>>>

完成之后,如果您想注销编码器,可以调用

>>> sdjson.encoders.unregister(MyClass)
>>>

来移除 MyClass 的编码器。如果您想用另一个编码器替换它,没有必要调用此函数:@sdjson.encoders.register 装饰器将替换给定类中任何现有的装饰器。

请注意,此模块不能用于创建 json 已经了解的任何对象的自定义编码器;即:dictlisttuplestrintfloatboolNone

待办事项

  1. 添加对自定义解码器的支持。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

sdjson-0.5.0.tar.gz (9.0 kB 查看散列)

上传时间

构建分发

sdjson-0.5.0-py3-none-any.whl (11.4 kB 查看散列)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页