本文介绍了如何通过GraphQL从JSON获取数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
enter code here {
"compdata": [
{
"id": 1,
"title": "FlexBox",
},
{
"id": 2,
"title": "Grid layout",
},
])
enter code here **file in:-- src-data-data.json**
enter code here export const IndexQuery = graphql`
query IndexQuery {
dataJson {
compdata {
id
example
}
}}`
推荐答案
您只需按照docs about Sourcing from JSON。
也就是说,从JSON本地文件采购时不需要使用GraphQL,只需导入对象即可,如下所示:
import React from "react"
import JSONData from "../../content/My-JSON-Content.json"
const SomePage = () => (
<div style={{ maxWidth: `960px`, margin: `1.45rem` }}>
<ul>
{JSONData.compdata.map((data, index) => {
return <li key={`content_item_${index}`}>{data.title}</li>
})}
</ul>
</div>
)
export default SomePage
在这种情况下,您可以将JSON数据作为JSONData
导入,并通过compdata
的数组进行循环。
但是,如果您仍然想要使用GraphQL,您将需要使用gatsby-transformer-json
插件,该插件将从您的JSON源代码创建可查询的GraphQL节点:
安装方式:
npm install gatsby-transformer-json
并使用它gatsby-config.js
:
module.exports = {
plugins: [
`gatsby-transformer-json`,
{
resolve: `gatsby-source-filesystem`,
options: {
path: `./src/your/json/folder`,
},
},
],
}
节点的别名将取决于您的文件夹结构和您的命名(未提供),在文档示例中,给出了letters.json
,例如:
[{ "value": "a" }, { "value": "b" }, { "value": "c" }]
因此,在您的GraphiQL操场(localhost:8000/___graphql
)中,您将能够要查询allLettersJson
节点: {
allLettersJson {
edges {
node {
value
}
}
}
}
您可以添加typeName
选项来修复您的命名,例如:
{
resolve: `gatsby-transformer-json`,
options: {
typeName: `Json`,
},
},
在这种情况下,创建的节点将为allJson
。
这篇关于如何通过GraphQL从JSON获取数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!