how to serialize a nested json inside a graphene resolve?

Viewed 587

I am studying the library graphene, (https://github.com/graphql-python/graphene) and I was trying to understand how I can serialize / return a nested json into the graphene and perform the query in the correct way.

The code that I will insert below follows the example of the link available in the repository (it is at the end of the question).

import graphene
from graphene.types.resolver import dict_resolver


class User(graphene.ObjectType):
    id = graphene.ID()

    class Meta:
        default_resolver = dict_resolver


class Patron(graphene.ObjectType):
    id = graphene.ID()
    name = graphene.String()
    age = graphene.Int()
    user = User

    class Meta:
        default_resolver = dict_resolver


class Query(graphene.ObjectType):

    patron = graphene.Field(Patron)

    @staticmethod
    def resolve_patron(root, info):
        return Patron(**{"id":1, "name": "Syrus", "age": 27, "user": {"id": 2}})


schema = graphene.Schema(query=Query)
query = """
    query something{
      patron {
        id
      }
    }
"""


if __name__ == "__main__":
    result = schema.execute(query)
    print(result.data)

The idea is basically to be able to use a multi-level json to "resolve" with graphql. This example is very simple, in the actual use case I plan, there will be several levels in json.

I think that if you use the setattr at the lowest level of json and go up, it works, but I would like to know if someone has already implemented or found a more practical way of doing it.

original example: https://github.com/graphql-python/graphene/blob/master/examples/simple_example.py

0 Answers
Related