棉花糖序列化 - 一种在每个字段基础上捕获异常的方法?
Marshmallow serialization - a way to catch exceptions on a per field basis?
有没有办法用 marshmallow [1] 在每个字段的基础上捕获异常(在访问 属性 时发生)?
我想使用 marshmallow 序列化 mongo db (mongoengine) 数据库的文档。
对于嵌套架构,引用的对象也会被序列化。
但是,如果引用不存在,mongo引擎会抛出错误。我想在序列化过程中捕获该错误(例如并设置字段为空)
[1] 用于将对象等复杂数据类型与本机 Python 数据类型相互转换的库 https://marshmallow.readthedocs.io/en/3.0/api_reference.html
我最终继承了 Nested
字段并重写了 get_value
方法。
from marshmallow import Schema, fields
from mongoengine.errors import DoesNotExist
class SafeNested(fields.Nested):
def get_value(self, *args, **kwargs):
try:
return super().get_value(*args, **kwargs)
except DoesNotExist:
return {}
有没有办法用 marshmallow [1] 在每个字段的基础上捕获异常(在访问 属性 时发生)?
我想使用 marshmallow 序列化 mongo db (mongoengine) 数据库的文档。 对于嵌套架构,引用的对象也会被序列化。
但是,如果引用不存在,mongo引擎会抛出错误。我想在序列化过程中捕获该错误(例如并设置字段为空)
[1] 用于将对象等复杂数据类型与本机 Python 数据类型相互转换的库 https://marshmallow.readthedocs.io/en/3.0/api_reference.html
我最终继承了 Nested
字段并重写了 get_value
方法。
from marshmallow import Schema, fields
from mongoengine.errors import DoesNotExist
class SafeNested(fields.Nested):
def get_value(self, *args, **kwargs):
try:
return super().get_value(*args, **kwargs)
except DoesNotExist:
return {}