【发布时间】:2022-10-02 22:02:27
【问题描述】:
我正在使用aiographql-client 运行graphql 查询并返回一个GraphQLResponse 对象,该对象包含一个原始dict 作为响应json 数据的一部分。
该字典符合一个模式,我可以使用graphql-core\'s build_schema method 将其解析为graphql.type.schema.GraphQLSchema 类型。
我也可以正确获取正在返回的对象的GraphQLObjectType,但是我不确定如何使用GraphQLObjectType 作为参考,将字典正确反序列化为具有所有适当字段的python 对象。
任何帮助将不胜感激!
-
几年前我也为此苦苦挣扎,如果我没记错的话,唯一明智地做到这一点的方法是将每个预期的字段名称手动映射到对象的 init 或其他函数中的相应字典条目。根据您的用例和数据结构,从所述 dict 转换为
dataclass可能是一个很好的解决方案。 -
感谢您的反馈。我可能会在不得已的情况下这样做 - 感觉虽然大部分工作已经存在,因为
GraphQLObjectType确实有类型,但是如果我没记错的话,原始字典中有一些属性不是名称与 ObjectType 的名称相同,因此如果本机不支持它,则在通用情况下执行此操作会有点棘手 -
好吧,我猜这是所有已知数据,因此您可以从头开始创建“通用”映射和解析器 - 没有那么多数据类型。与开箱即用的库相比,这是一些额外的工作,但如果您决定更长时间地坚持使用该技术,它应该会很有用。此外,根据您的项目的用途,您可以只使用
GraphQLObjectType对象运行,而不是将它们转换为 python 本机对象。
标签: python graphql deserialization