Easily read/write JSON files in Node.js. Note: this module cannot be used in the browser.
Writing JSON.stringify() and then fs.writeFile() and JSON.parse() with fs.readFile() enclosed in try/catch blocks became annoying.
npm install --save jsonfile
readFile(filename, [options], callback)readFileSync(filename, [options])writeFile(filename, obj, [options], callback)writeFileSync(filename, obj, [options])
options (object, default undefined): Pass in any fs.readFile options or set reviver for a JSON reviver.
throws(boolean, default:true). IfJSON.parsethrows an error, pass this error to the callback. Iffalse, returnsnullfor 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))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. Iffalse, returnsnullfor the object.
constjsonfile=require('jsonfile')constfile='/tmp/data.json'console.dir(jsonfile.readFileSync(file))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)})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'})(MIT License)
Copyright 2012-2016, JP Richardson jprichardson@gmail.com