Javascript 从ExpressAPI返回带引号的JSON对象——为什么?如何解决?
我知道这对我来说是一个愚蠢的错误,但我正在挠头,试图看看我错在哪里。我以前编写过MERN stack应用程序,但没有遇到这样的情况:返回的JSON数据用双引号括起来 在服务器端,我正在读取一个格式如下的文件(带有Javascript 从ExpressAPI返回带引号的JSON对象——为什么?如何解决?,javascript,json,node.js,express,Javascript,Json,Node.js,Express,我知道这对我来说是一个愚蠢的错误,但我正在挠头,试图看看我错在哪里。我以前编写过MERN stack应用程序,但没有遇到这样的情况:返回的JSON数据用双引号括起来 在服务器端,我正在读取一个格式如下的文件(带有fs.readFile) {"projects":[ { "project1": { "title": "something", "date": "sometime", "text": "some stuff", "img":
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"
}
}
]} "
也就是说,它用双引号括起来,尽管——据我所知——它已经被解析了。如果有人能指出我的错误(当然除了我之外,其他人都知道),我将不胜感激 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))
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))
您必须通过JSON.parse()解析响应您应该在catch块中向用户返回一些内容,否则浏览器将等待超时:
res.status(500).send('something break!')
请参见此处:您必须通过JSON.parse()解析响应您应该在catch块中向用户返回一些内容,否则,浏览器将等待超时:res.status(500).send('Something break!')
请参见此处: