嵌套结构时,棉花糖反序列化失败

2024-09-22 20:37:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用棉花糖反序列化一个深层结构。例如:

hour = {
    'day': {
        'name': 'monday'
    }
}
loaded_hour, error = HoursSerializationSchema().load(hour) # this works

new_practitioner_at_location = {
    'hours': [
        hour
    ]
}
loaded, error = PractitionerToServiceLocationSerializationSchema().load(new_practitioner_at_location) # this fails

当我尝试反序列化new_practitioner_at_location时,我得到以下结果(当序列化程序在处理“day”键时发生):

AttributeError: 'dict' object has no attribute '_sa_instance_state'

请注意,当相同的数据结构(hour)没有嵌套在new_practitioner_at_location中时,相同的模式可以反序列化相同的数据结构(hour)。在

显示问题的自包含脚本:

^{pr2}$

更新:

我认为发生的是,在反序列化new_practitioner_at_locationdict时,marshullow没有尝试反序列化HoursDay对象。如果我从HoursDay.hour字段中删除{}行为,那么您可以看到它只是将未序列化的数据结构分配给字段。这对我来说毫无意义,尤其是当您直接反序列化hourdict而不是将其嵌入new_practitioner_at_location中时,它是有效的。 任何帮助都将不胜感激。在


Tags: 数据结构new序列化loadlocationerrorthisat
1条回答
网友
1楼 · 发布于 2024-09-22 20:37:09

这是一个简单的错别字:

class PractitionerToServiceLocationSerializationSchema(ma.ModelSchema):
    class Meta:
        model = PractitionerToServiceLocation

        hours = fields.Nested('HoursSerializationSchema', many=True)

您正在class Meta内定义hours,但它必须在您的架构中:

^{pr2}$

相关问题 更多 >