我想对一个大对象进行字符串化(以将其写入文件),并且遇到v8的字符串长度限制。因此,我认为我要么需要找到一种方法将其字符串化为ArrayBuffer,要么需要以块的形式创建该字符串。
似乎https://github.com/dominictarr/JSONStream可以完成后者,但是我不明白如何使用stringify()
,因为文档中仅解释了.parse()
的用法。
最佳答案
这是使用JSONStream的一种方法,但是创建完美的测试对象并非易事,因此请尝试一下:
var JSONStream = require('JSONStream');
var es = require('event-stream');
var fs = require('fs');
var obj = {};
for (var i = 0; i < 2000; i++) {
obj['prop' + i] = 'value' + i;
}
var out = fs.createWriteStream(__dirname + '/out.json');
es.readable(function (count, next) {
for (var key in obj) {
this.emit('data', [key, obj[key]]);
}
this.emit('end');
next();
}).pipe(JSONStream.stringifyObject()).pipe(out);
关于json - 如何使用JSONStream来对大型对象进行字符串化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34707203/