У меня есть веб-сервис Flask с REST API с запросами, которые ожидают, что пользователь будет сериализован в определенном формате.Кроме того, веб-служба взаимодействует со сторонней службой, которая ожидает, что пользователь сериализован в другом формате.
Возможно ли с помощью Marshmallow сериализовать / десериализовать с другими форматами?Если нет, могу ли я получить предложения по альтернативным реализациям?Спасибо.
Приведенный ниже код является упрощенным примером, основанным на документации Marshmallow .
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()
для сериализациив любое из этих значений.