如何解决棉花糖能否将unknown = EXCLUDE与点分隔的字段自动转换为嵌套的JSON / dict?
在尝试使用点分隔的字段名称来load()
的数据时,使用unknown=INCLUDE
会将其自动转换为嵌套的字典(这是我想要的),但是我想这样做使用unknown=EXCLUDE
,因为我的数据具有很多我不想处理的属性。
似乎使用unknown=EXCLUDE
不会发生这种自动转换,并且以点分隔的字段本身会传递给模式,这当然是无法识别的。完全不使用unknown=
参数可以确认这一点,这会引发ValidationError。
是否可以合并unknown=EXCLUDE
并仍获取嵌套数据?还是有更好的方法来应对这种情况?
谢谢!
# using marshmallow v3.7.1
from marshmallow import Schema,fields,INCLUDE,EXCLUDE
data = {'LEVEL1.LEVEL2.LEVEL3': 'FooBar'}
class Level3Schema(Schema):
LEVEL3 = fields.String()
class Level2Schema(Schema):
LEVEL2 = fields.Nested(Level3Schema)
class Level1Schema(Schema):
LEVEL1 = fields.Nested(Level2Schema)
schema = Level1Schema()
print(schema.load(data,unknown=INCLUDE))
# prints: {'LEVEL1': {'LEVEL2': {'LEVEL3': 'FooBar'}}}
print(schema.load(data,unknown=EXCLUDE))
# prints: {}
print(schema.load(data))
# raises: marshmallow.exceptions.ValidationError: {'LEVEL1.LEVEL2.LEVEL3': ['Unknown field.']}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。