跳转到主要内容

用于将任意对象图序列化为JSON的Python库

项目描述

https://img.shields.io/pypi/v/jsonpickle.svg https://img.shields.io/pypi/pyversions/jsonpickle.svg https://readthedocs.org/projects/jsonpickle/badge/?version=latest Github Actions BSD

jsonpickle

jsonpickle 是一个用于复杂 Python 对象与 JSON 之间双向转换的库。jsonpickle 基于现有的 JSON 编码器,如 simplejson、json 和 ujson。

有关完整文档,请访问 jsonpickle 文档

鼓励在 GitHub 上的 jsonpickle 仓库 中提交错误报告和合并请求。

使用方法

以下是一个如何在使用脚本/项目时使用 jsonpickle 的非常简单的示例。注意 jsonpickle.encode 和 decode 的使用,以及数据是如何写入/编码到文件然后从文件中读取/解码的。

import jsonpickle
from dataclasses import dataclass

@dataclass
class Example:
    data: str


ex = Example("value1")
encoded_instance = jsonpickle.encode(ex)
assert encoded_instance == '{"py/object": "__main__.Example", "data": "value1"}'

with open("example.json", "w+") as f:
    f.write(encoded_instance)

with open("example.json", "r+") as f:
    written_instance = f.read()
    decoded_instance = jsonpickle.decode(written_instance)
assert decoded_instance == ex

有关更多示例,请参阅 GitHub 上的 示例目录 中的示例脚本。这些脚本可以在您的本地机器上运行,以了解 jsonpickle 的工作方式和行为,以及如何使用它。欢迎用户就他们如何使用 jsonpickle 提供贡献!

为什么选择 jsonpickle?

使用 Python 的 pickle(或 cPickle 或 dill)序列化的数据在 Python 外部难以阅读。使用 json 格式,jsonpickle 允许简单数据类型以可读格式存储,而更复杂的数据类型,如 numpy 数组和 pandas 数据框,则可以在支持 json 的任何平台上以机器可读的方式读取。例如,与 pickled 数据不同,存储在 Amazon S3 桶中的 jsonpickled 数据可以被 Amazon 的 Athena 指数化。

安全

从安全角度来看,jsonpickle 应与 Python stdlib 中的 pickle 模块 相同对待。

安装

使用 pip 安装最新稳定版本

pip install jsonpickle

使用 github 安装最新更改

pip install git+https://github.com/jsonpickle/jsonpickle.git

Numpy/Pandas 支持

jsonpickle 包含内置的 numpy 和 pandas 扩展。如果您想编码 sklearn 模型、numpy 数组、pandas 数据框以及其他基于 numpy/pandas 的数据,则必须通过注册其处理程序来启用 numpy 和/或 pandas 扩展。

>>> import jsonpickle.ext.numpy as jsonpickle_numpy
>>> import jsonpickle.ext.pandas as jsonpickle_pandas
>>> jsonpickle_numpy.register_handlers()
>>> jsonpickle_pandas.register_handlers()

开发

使用 make 运行单元测试

make test

内部使用 pytest 运行单元测试。

提供 tox 目标以使用所有已安装和受支持的 Python 版本运行测试

make tox

jsonpickle 本身除了 Python stdlib 外没有其他依赖项。当仅使用 tox 测试运行程序时,需要 tox 进行测试。

测试要求在 setup.cfg 中指定。建议创建一个虚拟环境并在其中运行测试。

python3 -mvenv env3
source env3/bin/activate
pip install --editable '.[dev]'
make test

您还可以使用类似 vx 的工具来激活虚拟环境而不会污染您的 shell 环境

python3 -mvenv env3
vx env3 pip install --editable '.[dev]'
vx env3 make test

如果您不能使用 venv,可以按以下方式安装测试包

pip install .[testing]

jsonpickle 支持多个 Python 版本,因此在使用多个虚拟环境和 tox 的组合时,可以有效地在开发过程中捕获兼容性问题。

GPG 签名

遗憾的是,虽然 jsonpickle 3.0.1 之前的版本仍然应该签名,但 GPG 签名支持已于 2023 年 5 月从 PyPi 中移除(https://blog.pypi.ac.cn/posts/2023-05-23-removing-pgp/)。

许可

基于BSD许可证授权。详细信息请见COPYING文件。

项目详情


下载文件

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

源分发

jsonpickle-3.3.0.tar.gz (329.7 kB 查看哈希值)

上传时间

构建分发

jsonpickle-3.3.0-py3-none-any.whl (42.4 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF 赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面