Python marshmallow 序列化和反序列化
Posted katsute_不语
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python marshmallow 序列化和反序列化相关的知识,希望对你有一定的参考价值。
安装 marshmallow
- pip install marshmallow
基本使用
- demo.py
"""
# python 序列化
- 序列化:对象转化为字典
- 反序列化: 字典转化为对象
"""
from marshmallow import fields, post_load, Schema
data = [{"name": "lin", "age": 23}, {"name": "fang", "age": 20}]
# 对象类
class User(object):
def __init__(self, name, age):
self.name = name
self.age = age
# 序列化类
class UserSchema(Schema):
name = fields.Str()
age = fields.Integer()
@post_load
def make(self, data, **kwargs):
return User(**data)
schema = UserSchema() # 生成一个序列化类实例
users = schema.load(data, many=True) # 反序列化, many=True 表示为批量序列化
"""
反序列化
schema.load(data, many=True) # dict -> 对象
schema.loads(data, many=True) # json 字符串 -> 对象
序列化
schema.dump(obj, many=True) # 对象 -> dict
schema.dumps(obj, many=True) # 对象 -> json 字符串
"""
print(users) # 打印为 元素为对象的列表,用于迭代
print(type(users)) # 列表
- serialization.py
from marshmallow import fields, post_load, Schema
from models import Student
class StudentSchema(Schema):
id = fields.Integer()
name = fields.Str()
age = fields.Integer()
height = fields.Float()
gender = fields.Str()
cls_id = fields.Integer()
is_delete = fields.Int()
@post_load
def make(self, data, **kwargs):
return Student(**data)
以上是关于Python marshmallow 序列化和反序列化的主要内容,如果未能解决你的问题,请参考以下文章