-
-
Notifications
You must be signed in to change notification settings - Fork 11
jsonl
jsonl
is a module that parses and stringifies JSON Lines files.
This module defines the parser function: parser([reviver])
. It takes an optional reviver
function as
an argument and returns a function chain that parses JSON Lines files.
As of 3.3.0 reviver
can be an object with two properties: reviver
and ignoreErrors
.
The first one is the function defined above and the second one is a boolean. If ignoreErrors
is
truthy then all JSON parsing errors are ignored silently. It defaults to false
.
The returned function is constructed with gen().
// const chain = require('stream-chain');
// const parser = require('stream-chain/jsonl/parser.js');
import chain from 'stream-chain';
import parser from 'stream-chain/jsonl/parser.js';
import fs from 'node:fs';
import zlib from 'node:zlib';
chain([
fs.createReadStream(fileName),
zlib.createGunzip(),
parser(),
x => console.log(x) // prints objects
]);
This module defines the parser as a stream: parserStream([options])
. It takes
an optional options
object as an argument and returns a stream that parses
JSON Lines files.
options
is an object used by asStream(). It defaults writableObjectMode
to false
and readableObjectMode
to true
. Additionally, it defines an optional reviver
function (see parser()
above).
As of 3.3.0 it defines an optional property ignoreErrors
. If it is truthy then all JSON
parsing errors are ignored silently. It defaults to false
.
Effectively, it is parser()
wrapped with asStream()
with the proper default for stream object modes.
// const chain = require('stream-chain');
// const parserStream = require('stream-chain/jsonl/parserStream.js');
import chain from 'stream-chain';
import parserStream from 'stream-chain/jsonl/parserStream.js';
import fs from 'node:fs';
import zlib from 'node:zlib';
chain([
fs.createReadStream(fileName),
zlib.createGunzip(),
parserStream(),
x => console.log(x) // prints objects
]);
This module defines the stringer as a stream: stringerStream([options])
. It takes
an optional options
object as an argument and returns a stream that stringifies
JSON Lines files.
options
is an object used by Duplex.
It defaults writableObjectMode
to true
and readableObjectMode
to false
. Additionally,
it defines the following optional properties to customize the output:
-
reviver
— a function. It is used as a second argument to JSON.stringify(). -
space
— a number or a string. It is used as a third argument to JSON.stringify(). -
prefix
— a string. It is used as a text to be prepended to the output. Defaults to an empty string. -
suffix
— a string. It is used as a text to be appended to the output. Defaults to an empty string. -
separator
— a string. It is used as a separator between items in the output. Defaults to a newline. -
emptyValue
— a string. It is used as a text to be used when no values were present but the stream was closed. Defaults toprefix + suffix
.
Warning: specifying prefix
, suffix
, separator
, or emptyValue
may result in an output
that is not valid JSON Lines.
A simple JSONL output:
// const chain = require('stream-chain');
// const parser = require('stream-chain/jsonl/parser.js');
// const stringerStream = require('stream-chain/jsonl/stringerStream.js');
import chain from 'stream-chain';
import parser from 'stream-chain/jsonl/parser.js';
import stringerStream from 'stream-chain/jsonl/stringerStream.js';
import fs from 'node:fs';
import zlib from 'node:zlib';
chain([
fs.createReadStream(fileName),
zlib.createGunzip(),
parser(),
x => [x], // wrap each object in an array
stringerStream() // produces a valid JSON Lines file
]);
Return an array of objects:
const asArray = stringerStream({
prefix: '[',
suffix: ']',
separator: ','
});
// for a stream of numbers: 1, 2, 3
// it produces this string:
// [1,2,3]