JavaScript - 导入包含对象数组的 JSON 时出错
2020-05-12
797
我正在尝试导入包含博客文章数组的 JSON 文件。JSON 文件中包含的所有数据均已成功导入,对象数组 (edges) 除外
此代码是使用 JestJS 为使用 Gatsby 构建的站点创建的单元测试的一部分。
当我尝试访问 Edges 数组时,出现“ TypeError:无法读取未定义的属性‘edges’ ”。
JS 代码:
import data from "./__mocks__/blog.json";
console.log(data);
data.allMarkdownRemark.edges.forEach((post) => {
console.log(post);
})
Console.log(data):
{ 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”对象数组吗?
2个回答
问题是您的变量名为 data,并且在 json 文件中您还将 data 定义为键。因此您必须将 data 用作变量一次,将 data 用作 JSON 文件的键第二次。
您必须像这样访问它:
data.data.allMarkdownRemark.edges.forEach((post) => {
console.log(post);
})
另一个解决方案是更改 JSON 文件的结构。
Aaron
2020-05-12
您可以:
import { data } from "./__mocks__/blog.json";
Teneff
2020-05-12