Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   JSON.parse не переводит в объект (https://javascript.ru/forum/node-js-io-js/83180-json-parse-ne-perevodit-v-obekt.html)

Biotoxsin 08.10.2021 01:52

JSON.parse не переводит в объект
 
Здравствуйте!

Возникла проблема когда в файле app.js на сервере функция JSON.parse не переводит полученный json файл из строки в объект, НО возвращает всегда строку из файла.

Пример:
app.get('/test', function (req, res) {
  var content = fs.readFileSync(__dirname + '/test/users.json', 'utf8')
  var users = JSON.parse(content)
  res.send(users)
})


При попытке получить ответ через ajax возвращает строку вместо объекта.

Подскажите, в чём может быть проблема?

Aetae 08.10.2021 02:33

Шо? HTTP - текстовый протокол. Всё что оттуда прилетает - текст. JSON.parse ты на клиенте должен делать, а не на сервере.

ksa 08.10.2021 10:39

Biotoxsin, файлы можно вообще передавать потоком... ;)
Посмотри простой пример этого и адаптируй для своего роутинга.
const http = require("http");
const fs = require("fs");
  
http.createServer(function(request, response){
      
    console.log(`Запрошенный адрес: ${request.url}`);
    // получаем путь после слеша
    const filePath = request.url.substr(1);
    // смотрим, есть ли такой файл
    fs.access(filePath, fs.constants.R_OK, err => {
        // если произошла ошибка - отправляем статусный код 404
        if(err){
            response.statusCode = 404;
            response.end("Resourse not found!");
        }
        else{
            fs.createReadStream(filePath).pipe(response);
        }
      });
}).listen(3000, function(){
    console.log("Server started at 3000");
});


Часовой пояс GMT +3, время: 02:18.