我有一个带有REST API的Flask Web服务,该服务具有希望用户以特定格式序列化的请求。此外,该Web服务还与希望用户以其他格式序列化的第三方服务进行交互。
棉花糖是否可以使用不同格式进行序列化/反序列化?如果没有,我可以得到有关替代实现的建议吗?谢谢。
下面的代码是基于Marshmallow documentation的简化示例。
import datetime as dt
class User(object):
def __init__(self, name, email):
self.name = name
self.email = email
self.created_at = dt.datetime.now()
def __repr__(self):
return '<User(name={self.name!r})>'.format(self=self)
from marshmallow import Schema, fields
class UserSchema(Schema):
name = fields.Str()
email = fields.Email()
created_at = fields.DateTime()
api_user_data = {
"name": "Alex Honnold",
"email": "ah@example.com"
}
3rd_party_service_user_data = {
"metadata": {
"name": "Alex Honnold",
"email": "ah@example.com"
}
schema = UserSchema()
我想通过对两个schema.load()
值调用类似user_data
的方法来反序列化,然后调用schema.dump()
来序列化为两个值中的一个。