gpt4 book ai didi

json - 如何使用流对 Node.js 中的大型嵌套对象进行 JSON 字符串化?

转载 作者:搜寻专家 更新时间:2023-10-31 22:34:27 31 4
gpt4 key购买 nike

我有一个大型 javascript 对象,我想将其转换为 JSON 并写入文件。我以为我可以像这样使用流来做到这一点

  var fs = require('fs');
var JSONStream = require('JSONStream');
var st = JSONStream.stringifyObject()
.pipe(fs.createWriteStream('./output_file.js'))

st.write(large_object);

当我尝试这个时,我得到一个错误:

stream.js:94
throw er; // Unhandled stream error in pipe.
^
TypeError: Invalid non-string/buffer chunk
at validChunk (_stream_writable.js:153:14)
at WriteStream.Writable.write (_stream_writable.js:182:12)

显然我不能只向这个 stringifyObject 写入一个对象。我不确定下一步是什么。我需要将对象转换为缓冲区?通过一些转换流运行对象并将其通过管道传输到 strinigfyObject

最佳答案

JSONStream 不能那样工作,但由于您的大对象已经加载到内存中,所以没有意义。

var fs = require('fs-extra')
var file = '/tmp/this/path/does/not/exist/file.txt'

fs.outputJson(file, {name: 'JP'}, function (err) {
console.log(err) // => null
});

这将写入 JSON。

如果你想使用 JSONStream,你可以这样做:

var fs = require('fs');                          
var jsonStream = require('JSONStream');

var fl = fs.createWriteStream('dat.json');

var out = jsonStream.stringifyObject();
out.pipe(fl);

obj = { test:10, ok: true };
for (key in obj) out.write([key, obj[key]]);
out.end();

关于json - 如何使用流对 Node.js 中的大型嵌套对象进行 JSON 字符串化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32427890/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com