README.md 1.82 KB

JSONLines for Node.js

Parse JSONLines with Node.js.

Installation

npm install --save jsonlines

Usage

var jsonlines = require('jsonlines')
var parser = jsonlines.parse()

parser.on('data', function (data) {
  console.log('Got json:', data)
})

parser.on('end', function () {
  console.log('No more data')
})

parser.write('{ "test": "This is a test!" }\n')
parser.write('{ "jsonlines": "is awesome" }')
parser.end()
var jsonlines = require('jsonlines')
var stringifier = jsonlines.stringify()

stringifier.pipe(process.stdout)

stringifier.write({ test: 'This is a test!' })
stringifier.write({ jsonlines: 'is awesome' })
stringifier.end()

API

.parse([options])

Returns a transform stream that turns newline separated json into a stream of javascript values.

options is an optional object with the keys documented below.

.stringify()

Returns a transform stream that turns javascript values into a stream of newline separated json.

Options

emitInvalidLine

If true, instead of emitting an error and cancelling the stream when an invalid line is proccessed, an invalid-line event is emitted with the same error. This is very useful when processing text that have mixed plain text and json data.

Example:

var jsonlines = require('jsonlines')
var parser = jsonlines.parse({ emitInvalidLines: true })

parser.on('data', function (data) {
  console.log('Got json:', data)
})

parser.on('invalid-line', function (err) {
  console.log('Got text:', err.source)
})

parser.write('{ "test": "This is a test!" }\n')
parser.write('This is some plain text\n')
parser.write('{ "jsonlines": "is awesome" }')
parser.end()

Output:

Got json: { test: 'This is a test!' }
Got text: This is some plain text
Got json: { jsonlines: 'is awesome' }