首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将GraphiQL查询转换为JSON

将GraphiQL查询转换为JSON
EN

Stack Overflow用户
提问于 2018-01-31 07:28:25
回答 1查看 3.9K关注 0票数 1

使用GraphQLHub,我可以对Hacker news上排名前三的新闻条目运行以下查询:

代码语言:javascript
复制
{
  hn {
    topStories(limit: 3) {
      title
      url
      timeISO
      by {
        id
      }
    }
  }
}

如何将此查询导出(或转换)为JSON?有没有能做到这一点的npm包?

我看到有graphql-to-json,但看起来您需要向其中传递一个.js文件,而不是像上面这样的原始查询。

EN

回答 1

Stack Overflow用户

发布于 2018-01-31 08:24:52

有很多方法可以做到这一点,但一个简单的实现是使用JS对象来映射查询,然后使用JSON.stringify()进行序列化

如果你能以字符串的形式访问上面的查询,那么你就可以按照我说的做。如果一个查询在JS环境中不是一个字符串,而不是像GraphiQL这样的集成开发环境,那么它就会爆炸。

代码语言:javascript
复制
let QueryStore = {}

const getHNTopStoriesQuery = `
    query getHNTopStories {
        hn {
            topStories(limit: 3) {
                title
                url
                timeISO
                by {
                id
                }
            }
        }
    }
`   

const addQuery = (queryToAdd, queries) => {
    let key = queryToAdd.trim().split(' ')[1]
    let queryEntry = {}
    queryEntry[key] = queryToAdd

    return Object.assign({}, queries, queryEntry)
}

const queryToGraphiQLQueryString = query => {
    let lines = query.trim().split('\n')
    let queryLines =lines.slice(1, -1).map(line => line.trim())

    return encodeURIComponent(`{${queryLines.join(' ')}}`)
}

// Add Query to Store
QueryStore = addQuery(getHNTopStoriesQuery, QueryStore)

// Get a GraphiQL URI query string of a Query
let qs = queryToGraphiQLQueryString(QueryStore['getHNTopStories'])
console.log(qs)

// Print a prettified JSON of the QueryStore
console.log(JSON.stringify(QueryStore, null, 2))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48532135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档