Как я могу сериализовать вложенный объект с помощью зефира? - PullRequest
0 голосов
/ 17 июня 2020

Я новичок в использовании flask / marshmallow, и у меня есть объект, который выглядит следующим образом:

{'field_0': {'field_1': {'field_2': {'field_3': '...', 'value': 'this is the value I want'}}}}

Можно ли определить схему для этого с помощью зефира без создания 4 вложенных классов?

1 Ответ

0 голосов
/ 18 июня 2020

Не совсем.

Вот канонический способ (сбросив 2 уровня для упрощения примера)

class Inner(ma.Schema):
    field_3 = ma.fields.IntField()
    value = ma.fields.StringField()

class Outer(ma.Schema):
    field_1 = ma.fields.Nested(Inner)

Вы можете использовать from_dict:

Outer = ma.Schema.from_dict("field_1": ma.fields.Nested(ma.Schema.from_dict("field_3": ma.fields.Int(), "value": ma.fields.String())

Вы также можете изобрести сложный способ с метапрограммированием (используя type для построения классов схемы), но в целом самый простой способ - это первый из приведенных выше.

...