Flask 使用棉花糖以多种格式序列化/反序列化

Flask 使用棉花糖以多种格式序列化/反序列化,flask,marshmallow,Flask,Marshmallow,我有一个带有RESTAPI的Flask web服务,其中的请求期望用户以特定格式序列化。此外,web服务与第三方服务交互,该服务希望用户以不同的格式序列化 棉花糖是否可以用不同的格式进行序列化/反序列化?如果没有,我可以得到关于替代实现的建议吗?谢谢 下面的代码是一个基于的简化示例 我想通过对user\u data值中的任何一个调用schema.load()之类的函数来反序列化,然后调用schema.dump()序列化为这些值中的任何一个。也许创建新的模式3rdPartyUserSchema,该

我有一个带有RESTAPI的Flask web服务,其中的请求期望用户以特定格式序列化。此外,web服务与第三方服务交互,该服务希望用户以不同的格式序列化

棉花糖是否可以用不同的格式进行序列化/反序列化?如果没有,我可以得到关于替代实现的建议吗?谢谢

下面的代码是一个基于的简化示例


我想通过对
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()