我的团队正在使用 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 数据?有没有可以提供帮助的最佳实践或库?
您可以使用流行的流式 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);
});
我希望这对你有用