【发布时间】:2017-09-15 11:54:24
【问题描述】:
我正在尝试在 NodeJS 中解析一个相当大的 JSON 文件(~500Mb)。我的实现基于this answer 中给出的异步方法:
var fileStream = require('fs');
var jsonObj;
fileStream.readFile('./data/exporttest2.json', fileCallback);
function fileCallback (err, data) {
return err ? (console.log(err), !1):(jsonObj = JSON.parse(data));
//Process JSON data here
}
这一切都很好,但我收到以下错误消息:
buffer.js:495
throw new Error('"toString()" failed');
^
Error: "toString()" failed
at Buffer.toString (buffer.js:495:11)
at Object.parse (native)
at fileCallback (C:\Users\1700675\Research\Experiments\NodeJS\rf_EU.js:49:18)
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:445:3)
我从this answer 了解到,这是由 V8 引擎中的最大缓冲区长度设置为 256Mb 造成的。
那么我的问题是,有没有一种方法可以异步读取我的 JSON 文件,块的缓冲区长度不超过 256Mb,而无需手动将我的 JSON 数据传播到多个文件中?
【问题讨论】:
-
您能分享一下您是如何使用
JSONstream模块的吗?