Я новичок в GraphQL, и мне было интересно, может ли кто-нибудь помочь мне понять, что эквивалентно схеме ниже JSON в схеме GraphQL:
[
{
"id": "1",
"name": "A",
"fldDef": [
{
"name": "f1",
"type": "str",
"opt": false
},
{
"name": "f2",
"type": "bool"
}]
},
{
"id": "2",
"name": "B",
"fldDef": [
{
"name": "f3",
"type": "str",
"opt": true
},
{
"name": "f4",
"type": "str",
"opt": true
}]
}
]
До сих пор мне удалось сопоставить ответ выше с объектом ниже:
public class FldDef {
private String name, type;
private boolean opt;
// getters & setters
}
public class Product {
private String id, name;
private Map<String, FldDef> fldDef;
// getters & setters
}
Тогда моя схема выглядит так, как показано ниже, но проблема, с которой я столкнулся, заключается в том, что я являюсь частью объекта Product
, у меня есть Map
, для которого я хотел бы получить правильную схему, но у меня возникают трудности с правильной схемой!
type FldDef {
name: String!
type: String!
opt: Boolean!
}
type Product {
id: String!
name: String!
fldDef: FldDef! // now here I don't know what is the syntax for representing MAP, do you know how to achieve this?
}
Я получаю исключение ниже:
Causedby:com.coxautodev.graphql.tools.TypeClassMatcher$RawClassRequiredForGraphQLMappingException: Type java.util.Map<java.lang.String, com.grapql.research.domain.FldDef> cannot be mapped to a GraphQL type! Since GraphQL-Java deals with erased types at runtime, only non-parameterized classes can represent a GraphQL type. This allows for reverse-lookup by java class in interfaces and union types.
Примечание. Я работаю с экосистемой Java (graphql-java).