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

Posted

技术标签:

【中文标题】如何将 JSONObject 值分配给 graphql 模式文件中的字段?【英文标题】:How to assign a JSONObject value to a field in graphql schema file? 【发布时间】:2020-12-14 08:10:44 【问题描述】:

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

【问题讨论】:

【参考方案1】:

您可以定义自己的标量类型 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 如何实现 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

【讨论】:

谢谢 Allirion..!你节省了我的时间,它的工作原理。! @DingThree 不客气!您能否告诉我您使用了哪种解决方案(自定义标量或使用扩展标量库)? Hello AllirionX - 我创建了一个自定义标量并将其映射到我的模式文件。而且,它工作得很好。!谢谢! 有人得到完整的调用实现,分享一下会有帮助吗?

以上是关于如何将 JSONObject 值分配给 graphql 模式文件中的字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字典值分配给 Python 中的变量?

核心数据 - 如何将核心数据中的属性值分配给变量

如何将 innerXML 值分配给 XPathNavigator?

如何将javascript值分配给临时数据

如何将承诺的返回值分配给变量? [复制]

如何将现有数组值分配给数组指针?