如何将 JSONObject 值分配给 graphql 模式文件中的字段?

How to assign a JSONObject value to a field in graphql schema file?

我正在使用 graphQL 和 spring 启动框架开发一个应用程序。在这里,我使用 GraphQL 的架构优先方法来编写我的架构详细信息。在我的场景中,我需要将 JSONObject 和 JSONArray 作为输入分配给我的架构文件中的几个字段。在 graphQL 模式文件中,我们不能直接将 JSONObject/JSONArray 设置为数据类型。有人可以指导我如何在 graphQL 中处理 JSONObject/JSONArray 吗?

您可以定义自己的标量类型JSON:

scalar JSON

type Foo {
  field: JSON
}

然后实现一个新的 java GraphQLScalarType bean:

@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 如何实现对象和 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