https://github.com/busterc/fs-ndjson
:information_source: read and write NDJSON files (Newline Delimited JSON)
https://github.com/busterc/fs-ndjson
json jsonld jsonlines ldjson ndjson
Last synced: 5 months ago
JSON representation
:information_source: read and write NDJSON files (Newline Delimited JSON)
- Host: GitHub
- URL: https://github.com/busterc/fs-ndjson
- Owner: busterc
- License: isc
- Created: 2018-02-13T22:19:01.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2019-10-02T14:27:34.000Z (over 5 years ago)
- Last Synced: 2024-11-29T20:49:46.868Z (5 months ago)
- Topics: json, jsonld, jsonlines, ldjson, ndjson
- Language: JavaScript
- Size: 45.9 KB
- Stars: 6
- Watchers: 3
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# fs-ndjson [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url] [![Coverage percentage][coveralls-image]][coveralls-url]
> read and write NDJSON files (Newline Delimited JSON)
## FYI
While NDJSON is often used for [efficient streaming of JSON](https://www.npmjs.com/package/ndjson), it is also a good format for persisting and retreiving object data collections to and from disk. For example, [NeDB](https://github.com/louischatriot/nedb) uses the format.
See Also:
* http://ndjson.org/
* https://en.wikipedia.org/wiki/JSON_streaming#Line-delimited_JSON## API
The following `fs-ndjson` methods mirror the `fs` core module method APIs, however, the methods have been [universalified](https://github.com/RyanZim/universalify) so that you can use promises or callbacks for async.
* readFile
* readFileSync
* writeFile
* writeFileSync**BONUS:** `writeFile` and `writeFileSync` will create the parent directory, if it does not already exist.
## Installation
```sh
$ npm install --save fs-ndjson
```## Usage
Given `/Users/tyler/project-mayhem/enemies.db` contains
```
{"name":"Equifax","location":"Atlanta, GA"}
{"name":"Visa","location":"Foster City, CA"}
``````js
const fsNdjson = require('fs-ndjson');// can return a promise
fsNdjson.readFile('/Users/tyler/project-mayhem/enemies.db').then(targets => {
console.log(targets);
// [
// {
// name: "Equifax",
// location: "Atlanta, GA"
// },
// {
// name: "Visa",
// location: "Foster City, CA"
// }
// ]
});// can use a callback
fsNdjson.readFile('/Users/tyler/project-mayhem/enemies.db', (err, enemies) => {
if (err) throw err;
console.log(enemies.length);
// => 2
});// can be used synchronously
let enemies = fsNdjson.readFileSync('/Users/tyler/project-mayhem/enemies.db');// ******** BUT WAIT, THERE'S MORE! ******** //
// Not only does it read, but it writes too! //// fsNdjson.writeFile // use callback or promise
// fsNdjson.writeFileSync // does what you think it does
```## License
ISC © [Buster Collings](https://about.me/buster)
[npm-image]: https://badge.fury.io/js/fs-ndjson.svg
[npm-url]: https://npmjs.org/package/fs-ndjson
[travis-image]: https://travis-ci.org/busterc/fs-ndjson.svg?branch=master
[travis-url]: https://travis-ci.org/busterc/fs-ndjson
[daviddm-image]: https://david-dm.org/busterc/fs-ndjson.svg?theme=shields.io
[daviddm-url]: https://david-dm.org/busterc/fs-ndjson
[coveralls-image]: https://coveralls.io/repos/busterc/fs-ndjson/badge.svg
[coveralls-url]: https://coveralls.io/r/busterc/fs-ndjson