stream friendly JSON.stringify
npm install rummage
var fs = require('fs')
var rummage = 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:
var fs = require('fs')
var rummage = require('rummage')
var split = require('split2')
rummage({
messages: { _array: messages() } // output as an array
}).pipe(process.stdout)
function messages () {
return fs.createReadStream(__dirname + '/messages.txt').pipe(split())
}
// produces
'{"messages":["message 1","message 2","message 3"]}\n'
Or as an object:
var fs = require('fs')
var rummage = require('rummage')
var split = require('split2')
var through = require('through2')
rummage({
messages: { _object: messages() } // output as an object
}).pipe(process.stdout)
function messages () {
return fs.createReadStream(__dirname + '/messages.txt')
.pipe(split())
.pipe(through.obj(write))
// transform so that we get [key, value] for each message
function write (chunk, enc, cb) {
var key = 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:
var fs = require('fs')
var rummage = require('rummage')
rummage({
messages: { _json: messages() } // output as json
}).pipe(process.stdout)
function messages () {
return fs.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
- outputvalue
as a string (default)_json
- outputvalue
as raw JSON_array
- outputvalue
as an array_object
- outputvalue
as an object. Each chunk ofvalue
must be an array consisting of[key, value]
See above for examples
MIT