Python – 不依赖第三方库对类对象进行json序列化与反序列化
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Python – 不依赖第三方库对类对象进行json序列化与反序列化
原文链接:https://www.stubbornhuang.com/1470/
发布于:2021年07月30日 15:54:09
修改于:2021年07月30日 16:17:19
1 python不依赖第三方库对类对象进行json序列化与反序列化
import json
class RequestArgs:
def __init__(self,name,video_path):
self.name = name
self.video_path = video_path
@staticmethod
def fromJson(mapping):
if mapping is None:
return None
return RequestArgs(name=mapping.get('name'),video_path=mapping.get('video_path'))
class RequestApi:
def __init__(self, funcode, token, reqeuestargs_object):
self.funcode = funcode
self.token = token
self.args = reqeuestargs_object
@staticmethod
def fromJson(mapping):
if mapping is None:
return None
return RequestApi(funcode=mapping.get('funcode'),token=mapping.get('token'),reqeuestargs_object=RequestArgs.fromJson(mapping.get('args')))
# 将类对象序列化
def obj_serialization_to_json(obj, **kwargs):
return json.dumps(obj, default=lambda j: j.__dict__, **kwargs)
# 将json反序列化为对象
def json_deserialization_to_obj(msg, cls, **kwargs):
return cls.fromJson(json.loads(msg, **kwargs))
if __name__ == '__main__':
requestApi = RequestApi('101101', '2ec45770-b897-4cd0-8ae1-e65ab065a661', RequestArgs('liming', 'liming.mp4'))
# 序列化
requestApi_json_str = obj_serialization_to_json(requestApi)
print('类对象序列化结果:\n'+requestApi_json_str)
# 反序列化
requestApi_deserialize = json_deserialization_to_obj(requestApi_json_str,RequestApi)
print('json反序列化结果:')
print(requestApi_deserialize.funcode)
print(requestApi_deserialize.token)
print(requestApi_deserialize.args.name)
print(requestApi_deserialize.args.video_path)
代码执行结果:
类对象序列化结果:
{"funcode": "101101", "token": "2ec45770-b897-4cd0-8ae1-e65ab065a661", "args": {"name": "liming", "video_path": "liming.mp4"}}
json反序列化结果:
101101
2ec45770-b897-4cd0-8ae1-e65ab065a661
liming
liming.mp4
当前分类随机文章推荐
- Python - 使用jsonpickle库对Python类对象进行json序列化和json反序列化操作 阅读3326次,点赞0次
- Python - argparse命令行参数解析库用法总结 阅读623次,点赞0次
- Python - 读取视频为numpy数组以及将numpy数组转换为视频 阅读1837次,点赞0次
- Python3爬虫 - 下载反盗链图片的方式 阅读2826次,点赞1次
- Python - 普通函数/lambda匿名函数/类成员函数作为回调函数的用法 阅读2075次,点赞0次
- Python - 运算符/、//和%的含义与区别 阅读485次,点赞0次
- Python - 列表list遍历方法总结 阅读531次,点赞0次
- Python - 配置Yolov5出现ImportError: cannot import name 'PILLOW_VERSION' from 'PIL'错误 阅读1316次,点赞0次
- 解决Python爬虫在爬资源过程中使用urlretrieve函数下载文件不完全且避免下载时长过长陷入死循环,并在下载文件的过程中显示下载进度 阅读4053次,点赞0次
- Python - glob模块详解以及glob.glob、glob.iglob函数的使用 阅读1123次,点赞0次
全站随机文章推荐
- 资源分享 - Curves and Surfaces for Computer Graphics 英文高清PDF下载 阅读1175次,点赞0次
- 常用的VSCode插件备忘 阅读29次,点赞0次
- UnrealEngine4 - 获取UE4最后的渲染缓存数据BackBuffer 阅读5308次,点赞3次
- Pytorch - torch.cat函数 阅读323次,点赞0次
- 我的开源项目 - 使用OnnxRuntime在CPU端部署RTMPose玩转实时2D姿态估计 阅读281次,点赞0次
- WordPress - 修改WP Editor.md markdown编辑器插件从剪切板粘贴图片上传的清晰度和质量 阅读1066次,点赞0次
- WordPress - 异步发送邮件,解决发送邮件阻塞耗时的问题 阅读118次,点赞0次
- 计算机图形学 - Hemisphere Lighting 半球光 阅读692次,点赞2次
- 资源分享 - Advanced High Dynamic Range Imaging, First Edition 英文高清PDF下载 阅读1509次,点赞0次
- 资源分享 - 解读基金:我的投资观与实践(季凯帆,康峰著)PDF下载 阅读1606次,点赞0次
评论
169