我问了这个问题:
How to pipe to function in node.js?
但我发现使用JSON并不容易。因为JSON是以块的形式流式传输的,所以当您尝试JSON.parse
一个不代表完整JSON对象的块时,它会中断。
以下代码适用于小型JSON文件,但对于大型JSON文件则有效。如何在流式传输大型JSON文件时执行此操作?
const fs = require('fs')
const {Transform} = require('stream')
const jsonTransform = new Transform({
readableObjectMode: true,
writableObjectMode: true,
transform: (chunk, encoding, done) => {
let json = JSON.parse(chunk)
// manipulate json here
done(null, JSON.stringify(json, null, 2))
}
})
fs.createReadStream('input.json')
.pipe(jsonTransform)
.pipe(fs.createWriteStream('output.json'))
答案 0 :(得分:2)
npm上有一吨模块处理这个问题,例如: Dominic Tarr JSONstream
input.json
另一种方法是确保</ul>
中的json是换行符(ndjson),然后你可以使用https://github.com/dominictarr/JSONStream将每一行解析为一个对象,你可以将其进一步管理到修改对象和字符串化内容。