如何在 Node.js 中高效处理大型 JSON 数据而不耗尽内存?

问题描述 投票:0回答:1

我的团队正在使用 Node.js 构建一个 API,用于处理大型 JSON 文件(最多 500MB)。我们尝试使用 JSON.parse 解析这些文件,但应用程序内存不足,然后崩溃。

当前使用以下代码

const fs = require('fs');

fs.readFile('largeFile.json', 'utf8', (err, data) => {
    if (err) throw err;
    const jsonData = JSON.parse(data);
    // Processing the JSON data here...
});

我读过有关 Node.js 中大文件可能存在的内存问题的信息。如何在不消耗太多内存的情况下高效地处理和处理大型 JSON 数据?有没有可以提供帮助的最佳实践或库?

javascript node.js json memory-management file-processing
1个回答
0
投票

您可以使用流行的流式 json 库:

stream-json:用于 Node.js 的灵活高效的基于流的 JSON 解析器。

JSONStream:将大型 JSON 文件解析为可管理的块。

clarinet:SAX 风格的事件流式 JSON 解析器。

使用JSONStream实现:

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

const stream = fs.createReadStream('largeFile.json', { encoding: 'utf8' });
const parser = JSONStream.parse('*'); // Adjust the pattern according to your JSON structure

stream.pipe(parser);

parser.on('data', (data) => {
  // Process each JSON object here
  console.log('Processing data:', data);
  // Your processing logic...
});

parser.on('end', () => {
  console.log('Finished processing all items.');
});

parser.on('error', (err) => {
  console.error('An error occurred:', err);
});

我希望这对你有用

© www.soinside.com 2019 - 2024. All rights reserved.