棉花糖能否将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 (将#修改为@)