Marshmallow - 将 None 字符串转为空字符串
Marshmallow - turn None string to empty string
我收到一封电子邮件正文,其中一些字符串是 None
而不是 ""
。
我试过使用 missing、default、allow_none 和我在网上找到的其他 hack,但没有任何效果。
我想在我的架构中将 None
变为 ""
。我认为一个简单的 email = fields.String(missing = "")
会起作用,但我想 None 不算丢失。
架构:
class CustomerSchema(Schema):
@post_dump
def change_none_to_string(self, data, **kwargs):
for field in data:
if data[field] is None:
data[field] = ""
return data
firstname = fields.String(missing = "")
lastname = fields.String(missing = "")
email = fields.String(missing = "")
您可以使用 post-转储或预加载函数在处理之前更改输入或输出中的内容,例如添加:
@post_dump
def change_none_to_string(self, data, **kwargs)
for field in data:
if data[field] is None:
data[field] = ""
return data
您的模式应该意味着您的输出将所有 None 字段替换为“”,并且您可以对输入进行预加载来做类似的事情。
假设您输入的是 json 中的原始文本(可能不是,我还没有看到您的输入),这应该可以完成工作,但这取决于您输入的格式:
@pre_dump
def change_none_to_string_input(self, data, **kwargs):
for field in data:
data[field] = data[field].replace("null", '""')
return data
查看 https://marshmallow.readthedocs.io/en/stable/extending.html 了解更多详细信息。
我收到一封电子邮件正文,其中一些字符串是 None
而不是 ""
。
我试过使用 missing、default、allow_none 和我在网上找到的其他 hack,但没有任何效果。
我想在我的架构中将 None
变为 ""
。我认为一个简单的 email = fields.String(missing = "")
会起作用,但我想 None 不算丢失。
架构:
class CustomerSchema(Schema):
@post_dump
def change_none_to_string(self, data, **kwargs):
for field in data:
if data[field] is None:
data[field] = ""
return data
firstname = fields.String(missing = "")
lastname = fields.String(missing = "")
email = fields.String(missing = "")
您可以使用 post-转储或预加载函数在处理之前更改输入或输出中的内容,例如添加:
@post_dump
def change_none_to_string(self, data, **kwargs)
for field in data:
if data[field] is None:
data[field] = ""
return data
您的模式应该意味着您的输出将所有 None 字段替换为“”,并且您可以对输入进行预加载来做类似的事情。
假设您输入的是 json 中的原始文本(可能不是,我还没有看到您的输入),这应该可以完成工作,但这取决于您输入的格式:
@pre_dump
def change_none_to_string_input(self, data, **kwargs):
for field in data:
data[field] = data[field].replace("null", '""')
return data
查看 https://marshmallow.readthedocs.io/en/stable/extending.html 了解更多详细信息。