Как прочитать содержимое файла в Node.js и преобразовать данные в JSON?

Я пытаюсь отправить данные из файла .json в качестве ответа с помощью Node.js. Я новичок в этом, и я не знаю, как обращаться с буфером.

Вот что я сделал:

const express = require('express');
const fs = require('fs');

const path = require('path');
const bodyParser = require('body-parser');

const app = express();

const port = 3000;

app.use(bodyParser.urlencoded({extended: false}));

app.use('/', (req, res, next) => {
    fs.readFile(path.join(__dirname, 'data', 'filename.json'), (err, content) => {
        res.send(JSON.stringify(content));
    })
});

app.listen(port, () => {
    console.log(`server is running on port: ${port}`)
});

Я ожидаю получить данные в формате JSON, но получаю буфер или просто числа. Думаю, я не понимаю некоторых концепций.


person slavhadz    schedule 05.04.2019    source источник


Ответы (2)


Сохраните буфер в переменной, а затем используйте toString() метод и объявление, которое JSON.parse

person RadekF    schedule 05.04.2019
comment
когда я пытаюсь использовать JSON.parse () после .toString (), я получаю сообщение об ошибке SyntaxError: Unexpected token] в JSON в позиции 0. Почему это так? Я проверил, и файл содержит действительный JSON. - person slavhadz; 05.04.2019

Что вы хотите сделать, так это указать такую ​​кодировку:

fs.readFile(path.join(__dirname, 'data', 'filename.json'), 'utf8', (err, content) => {
        res.setHeader('Content-Type', 'application/json');
        res.send(content); // content will be a string
    })

В противном случае, согласно документации, вы получите буфер.

person Jorge Cabot    schedule 05.04.2019