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 - 列表list遍历方法总结 阅读330次,点赞0次
- Python - yaml配置用法详解以及使用Pyyaml库操作yaml文件 阅读550次,点赞0次
- Python - list/numpy/pytorch tensor相互转换 阅读1442次,点赞0次
- Python - 普通函数/lambda匿名函数/类成员函数作为回调函数的用法 阅读1823次,点赞0次
- Python – 解决opencv-python使用cv2.imwrite()保存中文路径图片失败的问题 阅读878次,点赞0次
- Python3爬虫 - requests的请求响应状态码(requests.status_code) 阅读8495次,点赞4次
- Python - 字典dict遍历方法总结 阅读392次,点赞0次
- Python3爬虫 - requests库 阅读3527次,点赞3次
- Python - 运行YOLOv5出现AttributeError: module 'torchvision' has no attribute 'ops' 阅读1515次,点赞1次
- Python - 运算符/ or // or %的含义和区别 阅读1704次,点赞0次
全站随机文章推荐
- 资源分享 - Handbook of Discrete and Computational Geometry, First Edition 英文高清PDF下载 阅读1361次,点赞2次
- Transformer - 理解Transformer必看系列之,1 Self-Attention自注意力机制与多头注意力原理 阅读392次,点赞0次
- Duilib - 设置窗体阴影 阅读2696次,点赞2次
- C++ - std::map正向遍历与反向遍历的几种方式 阅读3793次,点赞3次
- 工具软件推荐 - 好用的免费电子书格式转换器Neat Converter 阅读790次,点赞0次
- Modern OpenGL从零开始 - Fbxsdk::FbxAMatrix转换为glm::mat4 阅读2340次,点赞0次
- 资源分享 - Computational Geometry in C, Second Edition 英文高清PDF下载 阅读2756次,点赞1次
- Modern OpenGL - GLSL着色语言3:GLSL中的数据类型 阅读1709次,点赞0次
- Blender - 更换默认的渲染背景环境贴图 阅读169次,点赞0次
- C++ - 使用标准库实现事件和委托,信号和槽机制 阅读164次,点赞0次
评论
164