如何序列化石墨烯解析中的嵌套 json?

jon*_*han 5 python graphql graphene-python

我正在研究石墨烯库(https://github.com/graphql-python/graphene),我试图了解如何将嵌套的 json 序列化/返回到石墨烯中并以正确的方式执行查询。

我将在下面插入的代码遵循存储库中可用链接的示例(位于问题末尾)。

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)

Run Code Online (Sandbox Code Playgroud)

这个想法基本上是能够使用多级 json 来“解析”graphql。这个例子很简单,在我规划的实际用例中,json中会有几个层次。

我认为如果你在 json 的最低级别使用 setattr 并向上,它是有效的,但我想知道是否有人已经实现或找到了更实用的方法。

原始示例: https ://github.com/graphql-python/graphene/blob/master/examples/simple_example.py