I have defined a POST call would that needs data:
{
    "one" : "hello",
    "two" : "world",
    "three" : { 
                "ab": "123", 
                "cd": false 
              }
}
For this, I am able to define one and two, but unsure what is the right was to define three. How can I specify a JSON field in Marshmallow? I am able to define basic fields such as:
from marshmallow import Schema, post_load, fields
class Foo(object):
    def __init__(self, one, two=None):
        self.one = one
        self.two = two
class MySchema(Schema):
    one = fields.String(required=True)
    two = fields.String()
    @post_load
    def create_foo(self, data, **kwargs):
        return Foo(**data)
How do I define three in MySchema? Should I:
json.loads()/json.dumps()? Or is there a way to define it properly?fields.Dict?Schema for this fieldfield.Field?I am looking at https://marshmallow.readthedocs.io/en/3.0/api_reference.html, though still not sure. A JSON sub-field or a nested JSON seems like a common use-case, yet I am not able to find anything relevant on this.
This can be done with nested schemas: https://marshmallow.readthedocs.io/en/3.0/nesting.html
Your schema would look something like:
class MySchema(Schema):
    one = fields.String(required=True)
    two = fields.String()
    three = fields.Nested(ThreeSchema)
class ThreeSchema(Schema):
    ab = fields.String()
    cd = fields.Boolean()
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With