用于 Python 的自定义 JSON 编码器利用 functools.singledispatch 来支持 Python 的内置类和用户创建的类的自定义编码器,而无需做太多的工作。
项目描述
用于 Python 的自定义 JSON 编码器利用 functools.singledispatch 来支持 Python 的内置类和用户创建的类的自定义编码器,而无需做太多的工作。
文档 |
|
|---|---|
测试 |
|
派皮 |
|
蟒蛇 |
|
活动 |
|
质量保证 |
|
其他 |
用法
创建和注册自定义编码器非常简单:
>>> 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模块中load、loading 、 JSONDecoder、JSONDecodeError和 JSONEncoder的访问,允许您使用sdjson作为json的替代品。
如果您希望在不使用自定义编码器的情况下转储对象,则可以传递不同的JSONEncoder子类,或者实际上是JSONEncoder 本身来获取库存功能。
>>> sdjson.dumps(class_instance, cls=sdjson.JSONEncoder) >>>
完成后,如果要注销编码器,可以调用:
>>> sdjson.encoders.unregister(MyClass) >>>
删除MyClass的编码器。如果您想用不同的编码器替换编码器,则无需调用此函数: @sdjson.encoders.register装饰器将替换给定类的任何现有装饰器。
请注意,此模块不能用于为 json已知的任何对象创建自定义编码器;即:dict、list、tuple、str、 int、float、bool和None。
去做
添加对自定义解码器的支持。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
sdjson-0.4.0.tar.gz
(8.9 kB
查看哈希)
内置分布
sdjson-0.4.0-py3-none-any.whl
(30.6 kB
查看哈希)