Flask 使用棉花糖以多种格式序列化/反序列化
我有一个带有RESTAPI的Flask web服务,其中的请求期望用户以特定格式序列化。此外,web服务与第三方服务交互,该服务希望用户以不同的格式序列化 棉花糖是否可以用不同的格式进行序列化/反序列化?如果没有,我可以得到关于替代实现的建议吗?谢谢 下面的代码是一个基于的简化示例Flask 使用棉花糖以多种格式序列化/反序列化,flask,marshmallow,Flask,Marshmallow,我有一个带有RESTAPI的Flask web服务,其中的请求期望用户以特定格式序列化。此外,web服务与第三方服务交互,该服务希望用户以不同的格式序列化 棉花糖是否可以用不同的格式进行序列化/反序列化?如果没有,我可以得到关于替代实现的建议吗?谢谢 下面的代码是一个基于的简化示例 我想通过对user\u data值中的任何一个调用schema.load()之类的函数来反序列化,然后调用schema.dump()序列化为这些值中的任何一个。也许创建新的模式3rdPartyUserSchema,该
我想通过对
user\u data
值中的任何一个调用schema.load()
之类的函数来反序列化,然后调用schema.dump()
序列化为这些值中的任何一个。也许创建新的模式3rdPartyUserSchema
,该模式定义嵌套的UserSchema
如下:metadata=fields.nested('UserSchema')
可以解决您的问题?@needtobe对于这个特定示例来说,这是个好主意。不过,我没有提到,为了简化我的问题,我去掉了api\u user\u data
和3rd\u service\u user\u data
之间的一些差异,这将使您建议的实现无法工作。我将编辑我的问题来说明这一点。使用两种不同的模式。也许创建新的模式3rdPartyUserSchema
,它定义了嵌套的UserSchema
,如下所示:metadata=fields。嵌套的('UserSchema')
可以解决您的问题?@needtobe对于这个特定的示例来说,这是个好主意。不过,我没有提到,为了简化我的问题,我去掉了api\u user\u data
和3rd\u service\u user\u data
之间的一些差异,这将使您建议的实现无法工作。我将编辑我的问题以注意这一点。使用两种不同的模式。
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()