Graphql 不接受带引号的键
Posted
技术标签:
【中文标题】Graphql 不接受带引号的键【英文标题】:Graphql not accepting keys with quotes 【发布时间】:2019-09-26 10:47:26 【问题描述】:我试图接受一个对象数组作为来自客户端的输入,但 graphql 由于格式原因拒绝了它。
"query': "mutationupdateDetails(input: [\"firstname\": \"Pradeep\",\"last\":\"G\", \"firstname\": \"sandeep\",\"last\":\"G\"])
Grqphql 抛出类似 Expected Name 但得到 String 的错误。这是因为名字是用引号编码的。但是我的客户正在使用 python 代码并且无法发送没有引号的密钥。我该如何解决?
【问题讨论】:
我正在使用 java 并将一个类与 JSON 协调起来,并且遇到与上述相同的问题,有人有解决方案吗? @Hacker 你是怎么解决的? 【参考方案1】:您的 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)
【讨论】:
以上是关于Graphql 不接受带引号的键的主要内容,如果未能解决你的问题,请参考以下文章