Skip to content

Repository files navigation

Node.js - jsonfile

Easily read/write JSON files in Node.js. Note: this module cannot be used in the browser.

npm Packagelinux build statuswindows Build status

Standard JavaScript

Why?

Writing JSON.stringify() and then fs.writeFile() and JSON.parse() with fs.readFile() enclosed in try/catch blocks became annoying.

Installation

npm install --save jsonfile

API


readFile(filename, [options], callback)

options (object, default undefined): Pass in any fs.readFile options or set reviver for a JSON reviver.

  • throws (boolean, default: true). If JSON.parse throws an error, pass this error to the callback. If false, returns null for the object.
constjsonfile=require('jsonfile')constfile='/tmp/data.json'jsonfile.readFile(file,function(err,obj){if(err)console.error(err)console.dir(obj)})

You can also use this method with promises. The readFile method will return a promise if you do not pass a callback function.

constjsonfile=require('jsonfile')constfile='/tmp/data.json'jsonfile.readFile(file).then(obj=>console.dir(obj)).catch(error=>console.error(error))

readFileSync(filename, [options])

options (object, default undefined): Pass in any fs.readFileSync options or set reviver for a JSON reviver.

  • throws (boolean, default: true). If an error is encountered reading or parsing the file, throw the error. If false, returns null for the object.
constjsonfile=require('jsonfile')constfile='/tmp/data.json'console.dir(jsonfile.readFileSync(file))

writeFile(filename, obj, [options], callback)

options: Pass in any fs.writeFile options or set replacer for a JSON replacer. Can also pass in spaces, or override EOL string or set finalEOL flag as false to not save the file with EOL at the end.

constjsonfile=require('jsonfile')constfile='/tmp/data.json'constobj={name: 'JP'}jsonfile.writeFile(file,obj,function(err){if(err)console.error(err)})

Or use with promises as follows:

constjsonfile=require('jsonfile')constfile='/tmp/data.json'constobj={name: 'JP'}jsonfile.writeFile(file,obj).then(res=>{console.log('Write complete')}).catch(error=>console.error(error))

formatting with spaces:

constjsonfile=require('jsonfile')constfile='/tmp/data.json'constobj={name: 'JP'}jsonfile.writeFile(file,obj,{spaces: 2},function(err){if(err)console.error(err)})

overriding EOL:

constjsonfile=require('jsonfile')constfile='/tmp/data.json'constobj={name: 'JP'}jsonfile.writeFile(file,obj,{spaces: 2,EOL: '\r\n'},function(err){if(err)console.error(err)})

disabling the EOL at the end of file:

constjsonfile=require('jsonfile')constfile='/tmp/data.json'constobj={name: 'JP'}jsonfile.writeFile(file,obj,{spaces: 2,finalEOL: false},function(err){if(err)console.log(err)})

appending to an existing JSON file:

You can use fs.writeFile option { flag: 'a' } to achieve this.

constjsonfile=require('jsonfile')constfile='/tmp/mayAlreadyExistedData.json'constobj={name: 'JP'}jsonfile.writeFile(file,obj,{flag: 'a'},function(err){if(err)console.error(err)})

writeFileSync(filename, obj, [options])

options: Pass in any fs.writeFileSync options or set replacer for a JSON replacer. Can also pass in spaces, or override EOL string or set finalEOL flag as false to not save the file with EOL at the end.

constjsonfile=require('jsonfile')constfile='/tmp/data.json'constobj={name: 'JP'}jsonfile.writeFileSync(file,obj)

formatting with spaces:

constjsonfile=require('jsonfile')constfile='/tmp/data.json'constobj={name: 'JP'}jsonfile.writeFileSync(file,obj,{spaces: 2})

overriding EOL:

constjsonfile=require('jsonfile')constfile='/tmp/data.json'constobj={name: 'JP'}jsonfile.writeFileSync(file,obj,{spaces: 2,EOL: '\r\n'})

disabling the EOL at the end of file:

constjsonfile=require('jsonfile')constfile='/tmp/data.json'constobj={name: 'JP'}jsonfile.writeFileSync(file,obj,{spaces: 2,finalEOL: false})

appending to an existing JSON file:

You can use fs.writeFileSync option { flag: 'a' } to achieve this.

constjsonfile=require('jsonfile')constfile='/tmp/mayAlreadyExistedData.json'constobj={name: 'JP'}jsonfile.writeFileSync(file,obj,{flag: 'a'})

License

(MIT License)

Copyright 2012-2016, JP Richardson jprichardson@gmail.com

About

Easily read/write JSON files.

Resources

Stars

1.2k stars

Watchers

20 watching

Forks

Releases

Packages

Used by

Contributors

Languages