What is jsonfile?
The jsonfile npm package is a simple JSON file reading and writing library for Node.js. It provides utility functions to read and write JSON files with ease, handling the asynchronous file system operations and JSON parsing/stringifying under the hood.
What are jsonfile's main functionalities?
Reading JSON files
This feature allows you to read JSON files asynchronously. The readFile function takes a file path and a callback function that receives an error or the parsed JSON object.
const jsonfile = require('jsonfile');
jsonfile.readFile('/path/to/file.json', (err, obj) => {
if (err) console.error(err);
console.log(obj);
});
Writing JSON files
This feature allows you to write JSON objects to files asynchronously. The writeFile function takes a file path, the object to be written, and a callback function that is called upon completion or error.
const jsonfile = require('jsonfile');
const obj = {name: 'John', age: 30};
jsonfile.writeFile('/path/to/file.json', obj, (err) => {
if (err) console.error(err);
});
Reading JSON files synchronously
This feature allows you to read JSON files synchronously, blocking the event loop until the file is read. The readFileSync function takes a file path and returns the parsed JSON object or throws an error.
const jsonfile = require('jsonfile');
try {
const obj = jsonfile.readFileSync('/path/to/file.json');
console.log(obj);
} catch (err) {
console.error(err);
}
Writing JSON files synchronously
This feature allows you to write JSON objects to files synchronously, blocking the event loop until the file is written. The writeFileSync function takes a file path and the object to be written, and it will throw an error if the operation fails.
const jsonfile = require('jsonfile');
const obj = {name: 'Jane', age: 25};
try {
jsonfile.writeFileSync('/path/to/file.json', obj);
} catch (err) {
console.error(err);
}
Customizing JSON spacing
This feature allows you to customize the indentation of the JSON output. The writeFile and writeFileSync functions accept an options object where you can specify the number of spaces to use for indentation.
const jsonfile = require('jsonfile');
const obj = {name: 'Alice', age: 28};
jsonfile.writeFile('/path/to/file.json', obj, {spaces: 2}, (err) => {
if (err) console.error(err);
});
Other packages similar to jsonfile
fs-extra
fs-extra is a package that builds on the native fs module, providing additional methods and functionality. It includes methods for JSON file handling similar to jsonfile, such as readJson, writeJson, readJsonSync, and writeJsonSync. fs-extra offers a broader set of file system operations, making it a more comprehensive choice for general file system tasks.
fs-jetpack
fs-jetpack is another file system library that offers a fluent API for file operations. It includes read and write functionalities for JSON files with methods like readAsync, writeAsync, read, and write. fs-jetpack provides a different API design and additional file manipulation methods, which might be preferred by some developers for its convenience and chaining capabilities.
Node.js - jsonfile
Easily read/write JSON files.
Why?
Writing JSON.stringify()
and then fs.writeFile()
and JSON.parse()
with fs.readFile()
enclosed in try/catch
blocks became annoying.
Installation
npm install jsonfile --save
API
readFile(filename, [options], callback)
var jf = require('jsonfile')
var util = require('util')
var file = '/tmp/data.json'
jf.readFile(file, function(err, obj) {
console.log(util.inspect(obj))
})
readFileSync(filename, [options])
var jf = require('jsonfile')
var util = require('util')
var file = '/tmp/data.json'
console.log(util.inspect(jf.readFileSync(file)))
options: throws
. Set to false
if you don't ever want this method to throw on invalid JSON. Will return null
instead. Defaults to true
. Others passed directly to fs.readFileSync
.
writeFile(filename, [options], callback)
var jf = require('jsonfile')
var file = '/tmp/data.json'
var obj = {name: 'JP'}
jf.writeFile(file, obj, function(err) {
console.log(err)
})
writeFileSync(filename, [options])
var jf = require('jsonfile')
var file = '/tmp/data.json'
var obj = {name: 'JP'}
jf.writeFileSync(file, obj)
spaces
Number of spaces to indent JSON files.
default: 2
var jf = require('jsonfile')
jf.spaces = 4;
var file = '/tmp/data.json'
var obj = {name: 'JP'}
jf.writeFile(file, obj, function(err) { //json file has four space indenting now
console.log(err)
})
Contributions
If you contribute to this library, please don't change the version numbers in your pull request.
Contributors
(You can add your name, or I'll add it if you forget)
License
(MIT License)
Copyright 2012-2014, JP Richardson jprichardson@gmail.com