77 lines
2.3 KiB
Markdown
77 lines
2.3 KiB
Markdown
|
|
# jsonpickle:将 Python pickles 变成 JSON
|
|||
|
|
|
|||
|
|
> 原文:<https://www.blog.pythonlibrary.org/2014/08/13/jsonpickle-turning-python-pickles-into-json/>
|
|||
|
|
|
|||
|
|
前几天,我在 StackOverflow 上看到一个有趣的问题,作者问是否有办法将 Python 字典序列化为人类可读的格式。给出的答案是使用一个名为 [jsonpickle](http://jsonpickle.github.io/) 的包,它将复杂的 Python 对象序列化到 JSON 和从 JSON 序列化。本文将向您简要介绍如何使用这个项目。
|
|||
|
|
|
|||
|
|
* * *
|
|||
|
|
|
|||
|
|
### 入门指南
|
|||
|
|
|
|||
|
|
要正确开始,您需要下载并安装 jsonpickle。通常,您可以使用 pip 来完成这项任务:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
|
|||
|
|
pip install jsonpickle
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Python 2.6 或更高版本没有依赖性。对于旧版本的 Python,您需要安装一个 JSON 包,比如 simplejson 或 demjson。
|
|||
|
|
|
|||
|
|
* * *
|
|||
|
|
|
|||
|
|
### 使用 jsonpickle
|
|||
|
|
|
|||
|
|
让我们从创建一个简单的基于汽车的类开始。然后我们将使用 jsonpickle 序列化该类的一个实例,并对其进行反序列化。
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
|
|||
|
|
import jsonpickle
|
|||
|
|
|
|||
|
|
########################################################################
|
|||
|
|
class Car(object):
|
|||
|
|
""""""
|
|||
|
|
|
|||
|
|
#----------------------------------------------------------------------
|
|||
|
|
def __init__(self):
|
|||
|
|
"""Constructor"""
|
|||
|
|
self.wheels = 4
|
|||
|
|
self.doors = 5
|
|||
|
|
|
|||
|
|
#----------------------------------------------------------------------
|
|||
|
|
def drive(self):
|
|||
|
|
""""""
|
|||
|
|
print "Driving the speed limit"
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
my_car = Car()
|
|||
|
|
serialized = jsonpickle.encode(my_car)
|
|||
|
|
print serialized
|
|||
|
|
|
|||
|
|
my_car_obj = jsonpickle.decode(serialized)
|
|||
|
|
print my_car_obj.drive()
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果您运行此代码,您应该会看到类似下面的输出:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
|
|||
|
|
{"py/object": "__main__.Car", "wheels": 4, "doors": 5}
|
|||
|
|
Driving the speed limit
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
这非常有效。序列化的对象在打印出来时非常容易阅读。重构序列化对象也非常简单。
|
|||
|
|
|
|||
|
|
* * *
|
|||
|
|
|
|||
|
|
### 包扎
|
|||
|
|
|
|||
|
|
jsonpickle 包允许开发人员通过其 **load_backend** 和 **set_preferred_backend** 方法选择他们想要使用的 JSON 后端来编码和解码 JSON。如果愿意,您还可以自定义序列化处理程序。总的来说,我相信对于需要能够容易地阅读他们的序列化输出的开发人员来说,这可能是一个方便的项目。
|
|||
|
|
|
|||
|
|
* * *
|
|||
|
|
|
|||
|
|
### 相关阅读
|
|||
|
|
|
|||
|
|
* jsonpickle [API 引用](http://jsonpickle.github.io/api.html)
|