如何在 Node.js 中读取文件内容并将数据转换为 JSON?

Posted

技术标签:

【中文标题】如何在 Node.js 中读取文件内容并将数据转换为 JSON?【英文标题】:How to read file content in Node.js and convert the data to JSON? 【发布时间】:2019-08-27 16:46:25 【问题描述】:

我正在尝试从 .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 格式获取数据,但我得到的是一个缓冲区或只是数字。我想我没有正确理解一些概念。

【问题讨论】:

【参考方案1】:

将缓冲区保存到变量中,然后使用toString() 方法和JSON.parse

【讨论】:

当我尝试在 .toString() 之后使用 JSON.parse() 时,我收到错误“SyntaxError: Unexpected token ] in JSON at position 0”。这是为什么?我检查了,该文件包含有效的 JSON。【参考方案2】:

你想要做的是像这样指定编码:

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
    )

否则根据documentation你会得到Buffer。

【讨论】:

以上是关于如何在 Node.js 中读取文件内容并将数据转换为 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Node JS 中读取文本文件并将其作为 JSON 对象返回?

在 node.js 中读取文件和读取目录

Node.js - 如何将流转换为字符串

Node.js:如何在提交时读取用户选择选项并在 textarea 中提供文件内容

如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)

如何将文件逐行读入node.js中的数组[重复]