将Java对象转换为graphQL请求字符串

时间:2019-06-10 22:56:32

标签: java json graphql

在我的GraphQL模式中,我在后端的myMutation中指定了一个schema.graphql方案:

type Mutation {
    myMutation(request: MyMutationRequest): MyMutationResponse
}

input MyMutationRequest {
    requestFoo: String
    requestBar: String
}

type MyMutationResponse {
    responseFoo: String
    responseBar: String
}

并使用Java实现它们各自的类:

@Builder
@Getter
public class MyMutationRequest {
    @NonNull private String requestFoo;
    @NonNull private String requestBar;
}

(注意:myMutation是从React前端发送的。)

在集成测试中,我正在尝试为请求构建JSON字符串,如下所示:

mutation {
  myMutation(request:{
    requestFoo: "Some request foo value"
    requestBar: "Some request bar value"
  }) {
    responseFoo
    responseBar
  }
}

虽然可以执行一系列字符串连接或String.format(),但必须在架构更改时随时对其进行更新,并且语法不是最干净的:

return "mutation {\n"
        + "   myMutation(request:{\n"
        + "     requestFoo: \"" + someFooValue + "\"\n"
        + "     requestBar: \"" + someBarValue + "\"\n"
        + "   }) {\n"
        + "     responseFoo\n"
        + "     responseBar\n"
        + "   }\n"
        + " }";

(此外,实际的请求类包含一些列表和对作为其字段,因此有点难以阅读。)

是否已经有了可以进行此转换的库?我已经尝试过JSONObject.toString(),但是它在字段名周围留下了引号。

0 个答案:

没有答案