如何在 Marshmallow 中反序列化不同的结构化 JSON 数据?
How do I deserialize a different structured JSON data in Marshmallow?
我有一个 Schema
如下:
from marshmallow import Schema, fields
class ContactSchema(Schema):
# ... other fields ...
phone = fields.Str()
# ... other fields ...
但是,JSON我处理的数据不一样:
{
// ... other data ...
"information": {
"address": "foo",
"email": "bar@baz.com",
"phone": "+101234567890"
}
// .. other data ..
}
如您所见,phone
键位于information
下方,这与ContactSchema
的形成方式不同。
我能否以及如何将 Schema
下的 Field
映射到目标 JSON 数据中的不同路径?
环境
- Python 3.5 及以上
- 棉花糖 2.16.3
您可以扩展架构并提供 pre_load
方法:
class ContactSchema(Schema):
@preload
def extract_information(self, data):
# Please check for None's
data['phone'] = data['information'].pop('phone')
return data
我有一个 Schema
如下:
from marshmallow import Schema, fields
class ContactSchema(Schema):
# ... other fields ...
phone = fields.Str()
# ... other fields ...
但是,JSON我处理的数据不一样:
{
// ... other data ...
"information": {
"address": "foo",
"email": "bar@baz.com",
"phone": "+101234567890"
}
// .. other data ..
}
如您所见,phone
键位于information
下方,这与ContactSchema
的形成方式不同。
我能否以及如何将 Schema
下的 Field
映射到目标 JSON 数据中的不同路径?
环境
- Python 3.5 及以上
- 棉花糖 2.16.3
您可以扩展架构并提供 pre_load
方法:
class ContactSchema(Schema):
@preload
def extract_information(self, data):
# Please check for None's
data['phone'] = data['information'].pop('phone')
return data