如何使用JSONStream对大对象进行字符串化

时间:2016-01-10 15:30:53

标签: json node.js stream

我想对一个大对象进行字符串化(将其写入文件)并且我正在运行到v8的字符串长度限制。所以我想我要么找到一种方法将字符串化为ArrayBuffer,要么我需要以块的形式创建字符串。

似乎https://github.com/dominictarr/JSONStream可以执行后者,但我不明白如何使用stringify(),因为文档中仅解释了.parse()的用法。

1 个答案:

答案 0 :(得分:3)

这是使用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);