You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gatsby的GraphQL中查询非数组结构的单个JSON文件?

别担心,这个问题其实挺常见的,我来帮你一步步解决它~

首先纠正一个小误解:gatsby-transformer-json 完全支持单个对象结构的JSON文件,文档里提到的数组支持只是其中一种场景,单个对象也能被正确解析,只是生成的GraphQL结构和数组略有不同。

为什么你找不到somethingJson这个查询入口?

当JSON文件是单个对象而非数组时,Gatsby会自动把它包装进一个集合类型里,也就是你看到的all[FileName]Json格式(这里就是allSomethingJson)。而单个节点的somethingJson入口不会自动生成——这是很多开发者容易踩的坑。

解决步骤

1. 先清理Gatsby缓存(关键!)

Gatsby有时候会缓存旧的Schema结构,导致新添加的JSON文件或者结构变更无法被识别。运行以下命令清除缓存:

gatsby clean

2. 重启开发服务器

缓存清理完成后,重新启动开发服务:

gatsby develop

3. 使用正确的GraphQL查询

现在你可以在GraphiQL里用allSomethingJson来查询你的数据,然后通过nodes[0]获取单个对象的内容,示例查询如下:

query GetSingleJsonData {
  allSomethingJson {
    nodes {
      key
    }
  }
}

返回的结果会是:

{
  "data": {
    "allSomethingJson": {
      "nodes": [
        {
          "key": "value"
        }
      ]
    }
  }
}

你只需要取allSomethingJson.nodes[0].key就能拿到你想要的值。

额外检查项

  • 确认你的something.json确实放在src/data目录下,文件名没有拼写错误(大小写也要注意,Gatsby的Schema是区分大小写的)
  • 检查gatsby-config.js里的gatsby-source-filesystem配置,确保path指向的目录正确,比如${__dirname}/src/data没有写错路径分隔符或者目录名

内容的提问来源于stack exchange,提问作者jsardev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:58:52