Javascript 从ExpressAPI返回带引号的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":

我知道这对我来说是一个愚蠢的错误,但我正在挠头,试图看看我错在哪里。我以前编写过MERN stack应用程序,但没有遇到这样的情况:返回的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"
        }
      }
    ]} "

也就是说,它用双引号括起来,尽管——据我所知——它已经被解析了。如果有人能指出我的错误(当然除了我之外,其他人都知道),我将不胜感激

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!')
请参见此处: