如何在棉花糖中反序列化其他结构化JSON数据?

时间:2018-11-07 19:23:54

标签: python json deserialization 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的形成方式不同。

我可以以及如何将Field下的Schema映射到目标JSON数据中的其他路径?


环境

  • Python 3.5及更高版本
  • 棉花糖2.16.3

1 个答案:

答案 0 :(得分:1)

您可以扩展架构并提供pre_load方法:

class ContactSchema(Schema):

    @preload
    def extract_information(self, data):
       # Please check for None's
       data['phone'] = data['information'].pop('phone')
       return data