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
当前分类随机文章推荐
- opencv-python - 读取视频,不改变视频分辨率修改视频帧率 阅读3706次,点赞2次
- Python - 不依赖第三方库对类对象进行json序列化与反序列化 阅读860次,点赞0次
- Python - 各种包安装、导入问题总结 阅读960次,点赞0次
- Python - 普通函数/lambda匿名函数/类成员函数作为回调函数的用法 阅读1426次,点赞0次
- Pip - 常用命令(安装,卸载,升级第三方库) 阅读2560次,点赞1次
- 简单粗暴:使用pycharm安装对应的Python版本第三方包 阅读2882次,点赞0次
- Pytorch - 使用opencv-python解码视频文件并将视频帧转换为Pytorch tensor作为网络模型输入数据 阅读1388次,点赞0次
- Python - 使用Opencv-Python库获取本机摄像头视频并保存为视频文件 阅读1764次,点赞0次
- Python - 使用scikit-video库获取视频的旋转角度并使用opencv_python根据旋转角度对视频进行旋转复原 阅读962次,点赞0次
- Python3 - 正则表达式去除字符串中的特殊符号 阅读11618次,点赞1次
全站随机文章推荐
- 资源分享 - 深入应用C++ 11代码优化与工程级应用(祁宇著)PDF下载 阅读3162次,点赞0次
- 三维点云重建(曲面重建)的经典算法 阅读5486次,点赞6次
- 三维旋转 - 四元数的基本概念以及四元数与欧拉角、旋转矩阵的相互转换 阅读143次,点赞0次
- 资源分享 - PHP与MySQL程序设计(第4版) 中文 PDF下载 阅读2035次,点赞0次
- Python - 使用with open as 读写文件 阅读967次,点赞0次
- FFmpeg - 关于ffmpeg avcodec_open2函数失败的问题 阅读2582次,点赞0次
- 资源分享 - Real-Time Cameras - A Guide for Game Designers and Developers 英文高清PDF下载 阅读1276次,点赞0次
- Unity - 字节数组byte[]保存为文件 阅读2811次,点赞2次
- C++ - 使用模板和智能指针构建一个双向链表工具类 阅读58次,点赞0次
- 书籍翻译 – Fundamentals of Computer Graphics, Fourth Edition,第5章 Linear Algebra中文翻译 阅读615次,点赞2次
评论
147