Java 在返回时将JsonObject分解为GraphQL类型

Java 在返回时将JsonObject分解为GraphQL类型,java,json,scala,graphql,vert.x,Java,Json,Scala,Graphql,Vert.x,Vertx是json的忠实粉丝,我也是第一流公民。我将jsonb列存储在postgres中,作为我的主要数据存储机制。有点像这样: 创建桌面游戏( id varchar(16)非空默认下一个\u id()主键, 数据jsonb不为空 ); 我检索数据,处理json对象,然后将其返回到浏览器。效果很好 虽然我也在尝试使用GraphQL,但似乎无法将json对象转换为GraphQL类型。e、 g.我将这些数据存储在数据库中: {"name": "dominion&qu

Vertx是json的忠实粉丝,我也是第一流公民。我将jsonb列存储在postgres中,作为我的主要数据存储机制。有点像这样:

创建桌面游戏(
id varchar(16)非空默认下一个\u id()主键,
数据jsonb不为空
);
我检索数据,处理json对象,然后将其返回到浏览器。效果很好

虽然我也在尝试使用GraphQL,但似乎无法将json对象转换为GraphQL类型。e、 g.我将这些数据存储在数据库中:

{"name": "dominion", "createdBy": "Donald X. Vaccarino", "id": 233}
这是graphql类型:

类型游戏{
id:长,
名称:String,
createdBy:String,
createdAt:DateTime,
deletedAt:DateTime
}
这个graphql查询返回一个空项列表,因为jsonArray中的jsonObject(game)没有被分解成
game
类型:

类型查询{
allGames(secureOnly:Boolean=false):[游戏]
}
但是,如果我使用json作为查询结果类型,则会显示游戏列表:

类型查询{
所有游戏(secureOnly:Boolean=false):[JSON]
}
但是,问题是graphql模式中现在没有类型信息。无法让客户端知道
JSON
对象中的属性

我的数据提取程序具有以下类型:

DataFetcher[CompletionStage[JsonArray]]

有没有想过如何在代码中返回json并让graphql响应返回游戏类型?

默认的graphql数据获取程序是
PropertyDataFetcher

如果要支持Vert.x
JsonObject
JsonArray
,则必须将GraphQL Java配置为使用VertxPropertyDataFetcher:

RuntimeWiring.Builder builder = RuntimeWiring.newRuntimeWiring();
builder.wiringFactory(new WiringFactory() {
  @Override
  public DataFetcher<Object> getDefaultDataFetcher(FieldWiringEnvironment environment) {
    return VertxPropertyDataFetcher.create(environment.getFieldDefinition().getName());
  }
});
runtimewilling.Builder=runtimewilling.newruntimewilling();
builder.wiringFactory(新wiringFactory(){
@凌驾
公共数据获取程序getDefaultDataFetcher(FieldWiringEnvironment环境){
返回VertxPropertyDataFetcher.create(environment.getFieldDefinition().getName());
}
});

默认的GraphQL数据获取程序是
PropertyDataFetcher

如果要支持Vert.x
JsonObject
JsonArray
,则必须将GraphQL Java配置为使用VertxPropertyDataFetcher:

RuntimeWiring.Builder builder = RuntimeWiring.newRuntimeWiring();
builder.wiringFactory(new WiringFactory() {
  @Override
  public DataFetcher<Object> getDefaultDataFetcher(FieldWiringEnvironment environment) {
    return VertxPropertyDataFetcher.create(environment.getFieldDefinition().getName());
  }
});
runtimewilling.Builder=runtimewilling.newruntimewilling();
builder.wiringFactory(新wiringFactory(){
@凌驾
公共数据获取程序getDefaultDataFetcher(FieldWiringEnvironment环境){
返回VertxPropertyDataFetcher.create(environment.getFieldDefinition().getName());
}
});

@andrewjames,谢谢你的关注。我改变了一些原始形式的代码,但忘了把那个地方改成well@andrewjames,谢谢你接过来。我改变了一些原始形式的代码,也忘了改变那个地方