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

Posted

技术标签:

【中文标题】如何使用 JSONStream 对大对象进行字符串化【英文标题】:How to use JSONStream to stringify a large object 【发布时间】:2016-04-14 21:59:03 【问题描述】:

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

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

【问题讨论】:

你看过这个:***.com/questions/32427890/…? 【参考方案1】:

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

【讨论】:

event-stream包中发现恶意代码,请注意。更多信息:snyk.io/blog/malicious-code-found-in-npm-package-event-stream

以上是关于如何使用 JSONStream 对大对象进行字符串化的主要内容,如果未能解决你的问题,请参考以下文章

如何通过node.js中的JSONStream模块解析一个大的、换行符分隔的JSON文件?

使用 JSONStream 读取大型 JSON 文件

使用 JSONPath 和 JSONStream 解析 json 流

通过 es.map() 和 JSONStream.stringify() 将 JSONStream.parsed() 数据传输到文件流时,节点堆耗尽

node.js - JSONStream 期间的无限循环

Nodejs:JSONStream解析方法正则表达式