如何在节点js中读取大型json文件?

时间:2019-06-22 00:41:32

标签: node.js json

我有一个大小为300MB的JSON文件,我正在尝试读取它,但无法正常工作。

如何读取大型JSON文件?如果有人可以用一小段代码指导我,那将是很棒的。

我已经尝试过 fs.readFile ,但没有运气,它适用于较小的文件,但不适用于较大的文件。

以下是我到目前为止尝试过的代码:

app.get('/getData', function (req, res) {
  fs.readFile('./uploads/test.json', function (err, data) {
      if (err) throw err
      var jsonData = data;
      var jsonParsed = JSON.parse(jsonData);
      res.json(jsonParsed);
    });
});

1 个答案:

答案 0 :(得分:2)

从代码片段中推测,我认为不需要在分发响应之前对JSON数据进行任何修改(即过滤)。如果是这种情况,则不需要解析JSON,并且可以使用Node.js内置的readable streams来提高效率。

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

app.get('/data', (req, res) => {
  res.setHeader('Content-Type', 'application/json');
  fs.createReadStream(path.join(__dirname, 'public', 'citylots.json')).pipe(res);
});

app.listen(process.env.PORT || 8080);