如何在 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:如何在提交时读取用户选择选项并在 textarea 中提供文件内容
如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)