Skip to main content

轻松反序列化复杂对象并将其序列化为 json。

项目描述

json-coder:快速将python序列化和反序列化为json对象

默认库 pythonjson模块支持自定义解码器和编码器,允许将自定义对象保存和恢复到 json 中。与酸洗对象相比,这更便携且更易于手动编辑。

该库支持以下用例:

  • 具有 json 加载和转储功能的类(定义转储的.json属性或.to_json()方法,定义 .from_json()构造函数或适当的 init 以供读取)

  • 蟒蛇dataclass

  • 其他地方定义的类的自定义加载和转储函数

基本上,类被分配了一个标识符,并创建了以下结构的 json 对象:

{
    '__<identifier>__': <object data>
}

使用示例

使用预定义架构的自定义类:

import json
import json_coder

@json.jsonify("testclass")
class TestClass:
    def __init__(self, a: int):
        self.a = a

    def to_json(self):
        return {"a": self.a}


# Usage
a = json.loads('{"__testclass__": {"a": 10}}')

print(a)
# <__main__.TestClass object at 0x10eb26810>

print(json.dumps(a))
# {"__testclass__": {"a": 10}}

数据类不需要任何额外的方法来正常工作。

from dataclasses import dataclass
import json
import json_coder

@json_coder.jsonify("testdataclass")
@dataclass
class TestDataClass:
    a: int


a = json.loads('{"__testdataclass__": {"a": 10}}')
print(type(a))  # should now be an object of testdataclass
print(json.dumps(a))

自定义转储器和读取功能也可以通过手动注册添加到现有类中:

import datetime
import json
import json_coder

json_coder.register("datetime", datetime.datetime, datetime.datetime.fromisoformat, datetime.datetime.isoformat)
d = json.loads('{"__datetime__": "2018-10-10"}')
print(d)
print(json.dumps(d))

项目详情


下载文件

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

源分布

json-coder-0.5.1.tar.gz (4.6 kB 查看哈希)

已上传 source

内置分布

json_coder-0.5.1-py3-none-any.whl (4.0 kB 图哈希)

已上传 py3