当前位置: 首页 > 知识库问答 >
问题:

如何公开具有不同名称的graphql字段

公西岳
2023-03-14

我正在探索GraphQL,想知道是否有任何重命名响应字段的方法,例如我有一个POJO与这些字段

class POJO {
  Long id;
  String name;
}

GraphQL查询:

type POJO {
  id: Long
  name: String
}

我的回答是这样的

{
  "POJO" {
    "id": 123,
    "name": "abc"
  }
}

我是否可以将名称字段重命名为类似用户名的名称,以便我的回答如下

{
  "POJO" {
    "id": 123,
    "userName": "abc"
  }
}

共有3个答案

孙岳
2023-03-14

看起来GraphQLName注释可以提供帮助。

文档中的示例:“此外,@GraphQLName可用于重写字段名。您可以使用@GraphQLDescription设置描述。”

这些参数也可用于字段参数:

public String field(@GraphQLName("val") String value) {
  return value;
}
宇文灿
2023-03-14

问题是:首先如何创建模式?Java和GraphQL类型之间没有内在联系——除非您将它们关联起来,否则它们是完全不相关的。因此,您可以在模式中以任何您想要的方式命名字段,并制作一个解析器(DataFetcher),从任何地方获取值(因此任何POJO字段也是如此)。

如果您使用工具从Java类型(graphql Java注释、graphql spqr等)生成模式,那么使用该工具的工具来驱动映射。上述两种工具都允许通过注释自定义映射。GraphQL SPQR也可通过外部配置实现相同功能。

如果你进一步澄清你的问题,我将能够给出更准确的答案。

米裕
2023-03-14

您可以使用GraphQL别名来修改JSON响应中的各个密钥。

如果这是您的原始查询

query {
  POJO {
    id
    name
  }
}

您可以为字段name引入GraphQL别名userName,如下所示:

query {
  POJO {
    id
    userName: name
  }
}

您还可以使用GraphQL别名在同一GraphQL操作中多次使用同一查询或变异字段。使用字段参数时,此get特别有趣:

query {
  first: POJO(first: 1) {
    id
    name
  }

  second: POJO(first: 1, skip: 1) {
    id
    name
  }
}
 类似资料:
  • 我使用的是,我需要展平包含同名字段的文档。 我创建的文档如下所示: 在那之后,我试图像下面这样压平文档: 我的主要方法是: 展平后,我得到的文档包含一个展平字段,但我必须得到两个展平字段。 如何解决此问题?

  • 我有一个PDF文件,其中包含一个表单,其中的字段具有相同的字段名。这是为了共享文档中的数据而做的。例如,我有合同,此文档的每一页都必须有公司名称,我将公司名称写在一个表单字段中,并将其复制到当前文档的所有页面,但是当我尝试使用库阅读此文档时,我没有得到此数据,因为只创建一个字段名为的字段,而另一个字段名为clean。 如何使用库读取具有相同字段名称的字段?

  • 问题内容: 我正在使用nodejs查询mongodb,并希望输出带有自定义字段名称的json。 例如,来自MongoDB的原始json可能 我想将其输出为 我了解MongoDB在其聚合框架中具有$ project运算符,但不确定如何在NodeJS中使用它们。 我正在使用的mongodb nodejs软件包是 对此有任何建议。 问题答案: 如果您使用的是和尚,则可以通过所选集合对象上的访问器来访问基

  • 问题内容: Jackson json注释中以下jax-b注释的等效方式是什么? 我需要生成json而不是xml,并且需要了解在jax-b中等效表示的常规jackson批注。 重命名字段。 使用getter代替字段。 如果json / xml元素名称是Java保留字(例如“ ”,“ ”,“ ”等),则这些功能尤其重要。 因此我们必须将POJO字段分别命名为“ new ”,“ _ public ”,“

  • 问题内容: 我有一个程序,需要在其中将文件夹内容(从)复制到同一目录级别(路径)中的新文件夹()。由于无法提供相同的名称,因此我使用tmpFolder名称(用于)。完成所有逻辑后,需要压缩复制的文件夹,并给zip命名 ,问题是当我解压缩时 看到。 我希望它在拉链之后。 我可以使用一些技巧吗? 另外,我知道我可以复制到不同级别(路径)的folder2中,但是我想尽可能避免复制,因为在处理大文件夹内容

  • 问题内容: 我想解析一个json文件,但它经过这样的事情: 但是大约有三千个这样的对象。我一直在使用Gson解析我的json对象,但是我怎么解析这种文件呢?以及如何检索名称“ CDG”或“ ORY”? 问题答案: 您可以尝试如下操作: 使用gson,您可以按以下方式检索键名: 并使用java- json 可以执行以下操作: 从网址获取json: