Ошибка при попытке проанализировать данные JSON из строки

#node.js #json

#node.js #json

Вопрос:

Я пытаюсь подготовить свой код для отправки json обратно моему чат-боту, может кто-нибудь, пожалуйста, сказать мне, почему я получаю сообщение об ошибке при этом:

     const data = '{ "Company Name": companyname, "service type": service }'
        try {
          const user = JSON.parse(data)
        } catch(err) {
          console.error(err)
}
  

это мой полный нижний код, который работает отдельно от этого

 //=======================================================================================
//  Get the Client data from database
//=======================================================================================
app.get("/Getcompany", function(request, response) {
  const cname = request.query.cname, query = `select * from clientdata_nsw where companyname  = ${connection.escape(
    cname
  )}`;
  connection.query(query, function(err, rows) {
    if (err) {
      console.log(err);
      return;
    }
    const data = '{ "Company Name": companyname, "service type": service }'
        try {
          const user = JSON.parse(data)
        } catch(err) {
          console.error(err)
}
    rows.forEach(function(result) {
      console.log(
        result.companyname,
        result.service,
        result.phone,
        result.open_times,
        result.rating_facebook,
        result.rating_goggle
      );
    });
    response.json({})
  });

})



  // listen for requests :)
var listener = app.listen(process.env.PORT, function () {
  console.log('Your app is listening on port '   listener.address().port);
});
  

Комментарии:

1. Какую ошибку вы получаете в данный момент?

2. C:UsersAdam . WolarczukDesktopProjectsnodetest>узел db.js Ваше приложение прослушивает порт 60402 (узел: 22868) [DEP0096] Предупреждение об устаревании: timers.unenroll() устарел. Пожалуйста, используйте вместо этого clearTimeout. C:UsersAdam . WolarczukDesktopProjectsnodetestnode_modulesmysqllibprotocolParser.js:78 выдает ошибку; // Повторно выбрасывает ошибки, отличные от MySQL ^ Ошибка синтаксиса: неожиданный токен c в JSON на позиции 18 в JSON.parse (<анонимный>) при запросе._callback C:UsersAdam . WolarczukDesktopProjectsnodetest>

3. @AdamWolarczuk Можете ли вы утешить значение cname? вы получаете фактическое значение?

4. я уверен, что получаю название компании, которое я передаю

Ответ №1:

Ошибка присутствует в самой первой строке

 const data = '{ "Company Name": companyname, "service type": service }'
JSON.parse(data)
  

Вы должны исключить companyname и service, потому что они не могут быть проанализированы анализатором JSON, иначе используйте объект JS вместо разбора строки и формирования объекта JS. Я не понимаю, почему у вас есть эти строки в коде, потому что они вообще ни для чего не используются.

 const data = '{ "Company Name": "companyname", "service type": "service" }'
JSON.parse(data)
  

Весь код переписан с использованием стандартов ES6.

 const PORT = process.env.PORT;

app.get("/Getcompany", async (request, response) => {
  const cname = request.query.cname,
    query = `select * from clientdata_nsw where companyname  = ${connection.escape(
      cname
    )}`;
  const data = '{ "Company Name": "companyname", "service type": "service" }';
  try {
    const user = JSON.parse(data);
  } catch (err) {
    console.error(err);
  }
  try {
    const results = await connection.query(query);
    results.forEach(row => {
      console.log(
        row.companyname,
        row.service,
        row.phone,
        row.open_times,
        row.rating_facebook,
        row.rating_goggle
      );
    });
  } catch (error) {
    console.error(error);
  }
  response.json({});
});

app.listen(PORT, () => {
  console.log(`Your app is listening on port ${PORT}`);
});
  

Комментарии:

1. Я использую это в этой части ); }); response.json({}) }); }) зная меня, я делаю это совершенно неправильно 🙂

2. я добавил это в row.foreach, и возникла та же проблема

3. просто вопрос, почему я добавляю синтаксический анализ дважды, если вы посмотрите, я добавляю его в цикле try

4. да, хорошо, я думаю, что нашел проблему const data = ‘{ «Название компании»: «companyname», «тип сервиса»: «service»}’; не сохраняет отображение моих ответов из базы данных, есть идеи