JSON-объекты возвращаются из Express API с кавычками - почему?а как решить? - PullRequest
0 голосов
/ 17 сентября 2018

Я знаю, что это глупая ошибка с моей стороны, но я чешу голову, пытаясь понять, в чем дело. Я уже писал приложения для стека 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"
        }
      }
    ]} "

То есть он заключен в двойные кавычки, хотя - насколько я понимаю - он уже проанализирован. Если бы кто-нибудь мог указать мне на мою (безусловно, очевидную для всех, кроме меня) ошибку, я был бы признателен!

1 Ответ

0 голосов
/ 17 сентября 2018

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...