我知道这对我来说是一个愚蠢的错误,但是我挠头试图查看我要去哪里。我以前写过MERN堆栈应用程序,但是没有遇到过:返回我的JSON数据并用双引号引起来。
在服务器端,我正在读取具有以下格式的文件(带有fs.readFile
)
{"projects":[
{
"project1": {
"title": "something",
"date": "sometime",
"text": "some stuff",
"img": "some url"
}
}
]}
并因此提供服务
router.get('/projects', function (req, res) {
logic.getProjects()
.then(projects => res.json(projects))
.catch(err => console.error(err))
我在客户端获取
getProjects() {
return fetch('/api/projects',{ headers:{'Content-Type': 'application/json'}})
.then(res => res.json())
.catch(err => console.log(err))
}
但是我的React应用收到的是
" {"projects":[
{
"project1": {
"title": "something",
"date": "sometime",
"text": "some stuff",
"img": "some url"
}
}
]} "
也就是说,即使它已经被解析了,但据我所知,它仍被双引号引起来。如果有人能指出我的错误(除了我自己,对所有人来说都是显而易见的),我将不胜感激!
答案 0 :(得分:2)
readFile返回一个字符串。您将需要JSON.parse(readFile)
并将其发送。
您的路线需要像
router.get('/projects', function (req, res) {
logic.getProjects()
.then(projects => JSON.parse(projects))
.then(jsonProjects => res.json(jsonProjects))
.catch(err => console.error(err))