如何将数据的 JSON 格式转换为 GraphQL 查询格式

Posted

技术标签:

【中文标题】如何将数据的 JSON 格式转换为 GraphQL 查询格式【英文标题】:How to convert JSON format of data to GraphQL query format 【发布时间】:2020-05-11 12:20:55 【问题描述】:

我有一个 Json 对象,想将其转换为 graphql 查询,以便在 graphql api 上发布请求。任何人都可以提供任何指向它的指针,因为我无法继续。

JSON object extracted from the POJO:

  "customer": 
     "idFromSource": "123", 
     "title": "Mrs", 
     "dateOfBirth": "1980-11-11"
  


graphql query that I need to hit a post request:

  "query": "mutation updateCustomer(customer: 
                    idFromSource: \"123\", 
                    title: \"Mrs\", 
                    dateOfBirth: \"1980-11-11\")
                     idFromSource title dateOfBirth"

【问题讨论】:

检查***.com/a/59577657/1776132 @Ash Raf 你可以使用类似github.com/dupski/json-to-graphql-query#readme 【参考方案1】:

在查询中将输入声明为变量。 Queries should be static。这意味着您永远不会在客户端上生成 GraphQL 代码。如果你这样做,你可能做错了什么。我不确定您使用的是哪种前端技术,但这是您使用 javascript fetch 进行的查询:

let json = // ... parsed JSON

let query = `
  mutation customerMutation($customer: CustomerInput)  # Adjust typename
    updateCustomer(customer: $customer) 
      idFromSource
      title
      dateOfBirth
    
  
`;

fetch('/graphql', 
  method: 'POST',
  headers:  'Content-Type': 'application/json' ,
  data: JSON.stringify(
    query,
    variables:  customer: json.customer 
  ),
);

诀窍在于 GraphQL API 上有一个类型(我在这里假设它被称为 CustomerInput,请在突变中调整它)与您的 JSON 对象具有相同的形状。因此,服务器将愉快地接受整个 JSON 对象作为突变中 $customer 变量的值。无需转换!

【讨论】:

以上是关于如何将数据的 JSON 格式转换为 GraphQL 查询格式的主要内容,如果未能解决你的问题,请参考以下文章

将json转换为石墨烯graphql响应

如何将这个现有的 json 转换为 GraphQL 端点?

如何将Java对象转换为JSON(Gson)?

如何将分层表转换为json

如何使用 Python 将 bigquery 返回的结果转换为 Json 格式?

如何将 JSON 转换为 CSV 格式并存储在变量中