Python – 使用jsonpickle库对Python类对象进行json序列化和json反序列化操作
1 Python类对象的json序列化和json反序列化
python类对象json序列化的定义:将类对象转换为可通过网络传输或可以存储到本地磁盘的Json数据格式的过程称为序列化;
python类对象json反序列化的定义:将Json转化为python类对象的过程称为反序列化;
2 jsonpickle库介绍
官方地址:http://jsonpickle.github.io/,关于该库的更多用法请参考官方文档。
2.1 jsonpickle安装
- pip
pip install jsonpickle
- conda
conda install jsonpickle
2.2 jsonpickle的使用
3 使用jsonpickle库对Python类对象序列化和反序列化
3.1 序列化
代码:
import jsonpickle
class RequestArgs:
def __init__(self,name,video_path):
self.name = name
self.video_path = video_path
class RequestApi:
def __init__(self, funcode, token, reqeuestargs_object):
self.funcode = funcode
self.token = token
self.args = reqeuestargs_object
if __name__ == '__main__':
requestApi = RequestApi('101101','2ec45770-b897-4cd0-8ae1-e65ab065a661',RequestArgs('liming','liming.mp4'))
john_string = jsonpickle.encode(requestApi,unpicklable=False)
print(john_string)
序列化结果:
{
"funcode": "101101",
"token": "2ec45770-b897-4cd0-8ae1-e65ab065a661",
"args": {
"name": "liming",
"video_path": "liming.mp4"
}
}
3.2 反序列化
import jsonpickle
class RequestArgs:
def __init__(self,name,video_path):
self.name = name
self.video_path = video_path
class RequestApi:
def __init__(self, funcode, token, reqeuestargs_object):
self.funcode = funcode
self.token = token
self.args = reqeuestargs_object
if __name__ == '__main__':
json_str = '{"funcode": "101101", "token": "2ec45770-b897-4cd0-8ae1-e65ab065a661", "args": {"name": "liming", "video_path": "liming.mp4"}}'
requestApi_dict = jsonpickle.decode(json_str)
requestApi = RequestApi(requestApi_dict['funcode'],requestApi_dict['token'],RequestArgs(requestApi_dict['args']['name'],requestApi_dict['args']['video_path']))
print(requestApi.funcode)
print(requestApi.token)
print(requestApi.args.name)
print(requestApi.args.video_path)
结果:
101101
2ec45770-b897-4cd0-8ae1-e65ab065a661
liming
liming.mp4
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Python – 使用jsonpickle库对Python类对象进行json序列化和json反序列化操作
原文链接:https://www.stubbornhuang.com/1469/
发布于:2021年07月30日 15:29:49
修改于:2023年06月26日 21:25:09
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50