Skip to main content

用于 Python 的自定义 JSON 编码器利用 functools.singledispatch 来支持 Python 的内置类和用户创建的类的自定义编码器,而无需做太多的工作。

项目描述

用于 Python 的自定义 JSON 编码器利用 functools.singledispatch 来支持 Python 的内置类和用户创建的类的自定义编码器,而无需做太多的工作。

文档

文档构建状态 文档检查状态

测试

Linux 测试状态 Windows 测试状态 macOS 测试状态 覆盖范围

派皮

PyPI - 包版本 PyPI - 支持的 Python 版本 PyPI - 支持的实现 PyPI - 轮子

蟒蛇

Conda - 包版本 康达 - 平台

活动

GitHub 上次提交 自标记版本以来的 GitHub 提交 维护 PyPI - 下载

质量保证

CodeFactor 等级 Flake8 状态 我的状态

其他

执照 GitHub 顶级语言 需求状态


用法

创建和注册自定义编码器非常简单:

>>> 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模块中loadloading 、 JSONDecoderJSONDecodeErrorJSONEncoder访问,允许您使用sdjson作为json的替代品。

如果您希望在不使用自定义编码器的情况下转储对象,则可以传递不同的JSONEncoder子类,或者实际上是JSONEncoder 本身来获取库存功能。

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

完成后,如果要注销编码器,可以调用:

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

删除MyClass的编码器。如果您想用不同的编码器替换编码器,则无需调用此函数: @sdjson.encoders.register装饰器将替换给定类的任何现有装饰器。

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

去做

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

下载文件

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

源分布

sdjson-0.4.0.tar.gz (8.9 kB 查看哈希

已上传 source

内置分布

sdjson-0.4.0-py3-none-any.whl (30.6 kB 查看哈希

已上传 py3