Как присвоить значение JSONObject полю в файле схемы graphql?
Я работаю над приложением с графическим интерфейсом и фреймворком для загрузки Spring. Здесь я использую подход GraphQL Schema-first для написания деталей моей схемы. В моем сценарии мне нужно назначить JSONObject и JSONArray в качестве входных данных для нескольких полей в моем файле схемы. В файле схемы graphQL мы не можем напрямую установить JSONObject/JSONArray как типы данных. Может кто-нибудь посоветовать мне, как обрабатывать JSONObject/JSONArray в graphQL?
1 ответ
Вы можете определить свой собственный скалярный тип JSON:
scalar JSON
type Foo {
field: JSON
}
Затем реализуйте новый Java-компонент GraphQLScalarType:
@Component
public class JSONScalarType extends GraphQLScalarType {
JSONScalarType() {
super("JSON", "JSON value", new Coercing<Object,Object>() {
...
});
}
}
Наконец, реализуйте скалярное принуждение. Вы можете найти руководство по скалярным типам здесь https://www.graphql-java.com/documentation/v15/scalars/
Или, как в graphql, JSON - это объект, вы можете посмотреть, как graphql-java-extended-scalars реализовали скаляры Object и JSON: https://github.com/graphql-java/graphql-java-extended-scalars/blob/master/src/main/java/graphql/scalars/object/ObjectScalar.java
Еще одно решение - использовать библиотеку graphql-java-extended-scalars: https://github.com/graphql-java/graphql-java-extended-scalars.