javascript - JavaScript - 导入包含对象数组的 JSON 时出错
问题描述
我正在尝试导入包含一系列博客文章的 JSON 文件。JSON 文件中包含的所有数据均已成功导入,但对象数组(边)除外
此代码是使用 JestJS 创建的单元测试的一部分,用于使用 Gatsby 构建站点。
当我尝试访问边数组时,我得到“ TypeError: Cannot read property 'edges' of undefined ”。
JS代码:
import data from "./__mocks__/blog.json";
console.log(data);
data.allMarkdownRemark.edges.forEach((post) => {
console.log(post);
})
Console.log(数据):
{ data: { allMarkdownRemark: { edges: [Array] } }
我的 JSON 文件被格式化为 JSON 对象,因此没有必要使用 JSON.parse() JSON 文件:
{
"data": {
"allMarkdownRemark": {
"edges": [
{
"node": {
"id": "c60d0972-1f4a-55ae-b762-c24795fae501",
"fields": {
"slug": "/a-tu-cerebro-no-le-gusta-la-innovacion/"
},
"frontmatter": {
"title": "A tu cerebro no le gusta la Innovación",
"templateKey": "blog-post",
"date": "September 16, 2017"
}
}
},
{
"node": {
"id": "1624f260-4c77-55d3-8297-4f0ad688f878",
"fields": {
"slug": "/la-mente-es-para-tener-ideas-no-para-almacenarlas/"
},
"frontmatter": {
"title": "La mente es para tener Ideas™, no para almacenarlas",
"templateKey": "blog-post",
"date": "August 26, 2017"
}
}
}
]
}
}
}
您知道如何从 JSON 文件中正确导入“edges”对象数组吗?
解决方案
问题是您的变量称为数据,并且在您的 json 文件中,您还将数据定义为键。因此,您必须使用数据一次作为变量,第二次作为 JSON 文件的键。
你必须像这样访问它:
data.data.allMarkdownRemark.edges.forEach((post) => {
console.log(post);
})
另一种解决方案是更改 JSON 文件的结构。
推荐阅读
- sql - 如何解决错误组功能不允许
- python - 如何在基于密度的聚类中获取属于其聚类的文档?
- objective-c - 无法购买。联系开发商以获取更多信息订阅优惠
- python - 将 scipy 与复杂值函数结合使用时,如何避免多次调用慢速函数?
- sockets - 谁能告诉我如何在 Wireshark 上激活环回?
- flutter - 我应该在一页/屏幕中使用多个块在 Flutter 中加载不同的状态吗?
- python - pip 安装了 biopython,但它不会编译 Bio 模块
- python - 如何在 Python 中为 Linux 创建 URL 快捷方式?
- php - 使用本地 php.ini 文件运行 Cron 作业 - Laravel 5.8
- php - 通过变量分隔符拆分和捕获文本