Graphql不接受带引号的键

时间:2019-05-08 16:27:58

标签: python graphql

我正在尝试从客户端接受对象数组作为输入,但是graphql由于格式而拒绝它。

{"query': "mutation{updateDetails(input: [{\"firstname\": \"Pradeep\",\"last\":\"G\"}, {\"firstname\": \"sandeep\",\"last\":\"G\"}])}}

Grqphql引发类似“预期名称”的错误,但出现了字符串。这是因为名字是用引号编码的。但是我的客户使用的是python代码,无法发送不带引号的密钥。我该如何解决?

1 个答案:

答案 0 :(得分:0)

您的 JSON 中似乎有一个小错误。您用双引号打开字符串,但在第一个属性 query 之后,然后用单引号将其关闭。

然后请记住,graphql 查询不是 JSON。 GraphQL 定义了自己的语言。在 GraphQL 中,字符串必须用双引号引起来。不允许使用单引号。

并且变量(例如,对于您示例中的突变)必须在没有任何引号的情况下发布。 http://spec.graphql.org/June2018/#sec-Language.Variables

我做什么:我创建 GraphQL 查询的值,即。手动查询属性的值。然后我才用 JSON 包装它。

这是我的 HTTP POST 实体:mime type = application/json

  String graphQLQueryString = "{ ... }"   // this is not JSON!
  String jsonPayload = JSONObject().put("query", graphQLQueryString)