kev*_*ler 6 io json stream node.js jsonstream
我有一个大的javascript对象,我想转换为JSON并写入文件.我想我可以使用像这样的流来做到这一点
var fs = require('fs');
var JSONStream = require('JSONStream');
var st = JSONStream.stringifyObject()
.pipe(fs.createWriteStream('./output_file.js'))
st.write(large_object);
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,我收到一个错误:
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)
Run Code Online (Sandbox Code Playgroud)
所以显然我不能写一个对象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
});
Run Code Online (Sandbox Code Playgroud)
这将写入 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();
Run Code Online (Sandbox Code Playgroud)