23
I’m a newbie for the graphene and I’m trying to map the following structure into a Object Type and having no success at all
{
"details": {
"12345": {"txt1": "9", "txt2": "0"},
"76788": {"txt1": "6", "txt2": "7"},
}
}
Any guidance is highly appreciated
Thanks
2
2 Answers
Reset to default
25
It is unclear what you are trying to accomplish, but (as far as I know) you should not have any arbitrary key/value names when defining a GraphQL schema. If you want to define a dictionary, it has to be be explicit. This means ‘12345’ and ‘76788’ should have keys defined for them. For instance:
class CustomDictionary(graphene.ObjectType):
key = graphene.String()
value = graphene.String()
Now, to accomplish a schema similar to what you ask for, you would first need to define the appropriate classes with:
# Our inner dictionary defined as an object
class InnerItem(graphene.ObjectType):
txt1 = graphene.Int()
txt2 = graphene.Int()
# Our outer dictionary as an object
class Dictionary(graphene.ObjectType):
key = graphene.Int()
value = graphene.Field(InnerItem)
Now we need a way to resolve the dictionary into these objects. Using your dictionary, here’s an example of how to do it:
class Query(graphene.ObjectType):
details = graphene.List(Dictionary)
def resolve_details(self, info):
example_dict = {
"12345": {"txt1": "9", "txt2": "0"},
"76788": {"txt1": "6", "txt2": "7"},
}
results = [] # Create a list of Dictionary objects to return
# Now iterate through your dictionary to create objects for each item
for key, value in example_dict.items():
inner_item = InnerItem(value['txt1'], value['txt2'])
dictionary = Dictionary(key, inner_item)
results.append(dictionary)
return results
If we query this with:
query {
details {
key
value {
txt1
txt2
}
}
}
We get:
{
"data": {
"details": [
{
"key": 76788,
"value": {
"txt1": 6,
"txt2": 7
}
},
{
"key": 12345,
"value": {
"txt1": 9,
"txt2": 0
}
}
]
}
}
6
You can now use graphene.types.generic.GenericScalar
1
-
A contextual example would be really helpful.
– pdoherty92632 mins ago
some more info on what issues you're having and an example of the code where those issues arise would be helpful. We don't really have much to go on with here mate.
Apr 14, 2018 at 10:16
github.com/graphql-python/graphene/issues/… Using GenericScalar does the job
Mar 19, 2021 at 12:58