stream friendly JSON.stringify
npm install rummage
varfs=require('fs')varrummage=require('rummage')rummage({message: fs.createReadStream(__dirname+'/message.txt')}).pipe(process.stdout)// produces'{"message":"contents of message.txt\n"}'By default stream data is concatenated and output as a string, as per the above example. However, there are special instructions to treat streams as arrays, objects or raw JSON.
Imagine you want to retrieve a list of newline-delimited messages from a file and output them as JSON:
varfs=require('fs')varrummage=require('rummage')varsplit=require('split2')rummage({messages: {_array: messages()}// output as an array}).pipe(process.stdout)functionmessages(){returnfs.createReadStream(__dirname+'/messages.txt').pipe(split())}// produces'{"messages":["message 1","message 2","message 3"]}\n'Or as an object:
varfs=require('fs')varrummage=require('rummage')varsplit=require('split2')varthrough=require('through2')rummage({messages: {_object: messages()}// output as an object}).pipe(process.stdout)functionmessages(){returnfs.createReadStream(__dirname+'/messages.txt').pipe(split()).pipe(through.obj(write))// transform so that we get [key, value] for each messagefunctionwrite(chunk,enc,cb){varkey=chunk.toString('utf8').slice(-1)cb(null,[key,chunk])}}// produces'{"messages":{"1":"message 1","2":"message 2","3":"message 3"]}\n'And lastly, as raw JSON:
varfs=require('fs')varrummage=require('rummage')rummage({messages: {_json: messages()}// output as json}).pipe(process.stdout)functionmessages(){returnfs.createReadStream(__dirname+'/messages.json')}// produces'{"messages":{"1":"message 1","2":"message 2","3":"message 3"]}\n'Return a new readable stream of JSON from value
If a stream is encountered within value, or value is itself a stream, its data will be concatenated and output as a string by default. This behaviour can be overridden using special types, which are:
_string- outputvalueas a string (default)_json- outputvalueas raw JSON_array- outputvalueas an array_object- outputvalueas an object. Each chunk ofvaluemust be an array consisting of[key, value]
See above for examples
MIT