📄 README.md

← 返回目录

Node.js - jsonfile ================

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

![npm Package](https://www.npmjs.org/package/jsonfile) ![linux build status](https://github.com/jprichardson/node-jsonfile/actions?query=branch%3Amaster) ![windows Build status](https://ci.appveyor.com/project/jprichardson/node-jsonfile/branch/master)

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) * readFileSync(filename, [options]) * writeFile(filename, obj, [options], callback) * writeFileSync(filename, obj, [options])

----

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.

const jsonfile = require('jsonfile')
const file = '/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.

const jsonfile = require('jsonfile')
const file = '/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.

const file = '/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.

const jsonfile = require('jsonfile')

const file = '/tmp/data.json' const obj = { name: 'JP' }

jsonfile.writeFile(file, obj, function (err) { if (err) console.error(err) })

Or use with promises as follows:

const jsonfile = require('jsonfile')

const file = '/tmp/data.json' const obj = { name: 'JP' }

jsonfile.writeFile(file, obj) .then(res => { console.log('Write complete') }) .catch(error => console.error(error))

formatting with spaces:

const jsonfile = require('jsonfile')

const file = '/tmp/data.json' const obj = { name: 'JP' }

jsonfile.writeFile(file, obj, { spaces: 2 }, function (err) { if (err) console.error(err) })

overriding EOL:

const jsonfile = require('jsonfile')

const file = '/tmp/data.json' const obj = { 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:

const jsonfile = require('jsonfile')

const file = '/tmp/data.json' const obj = { 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.

const jsonfile = require('jsonfile')

const file = '/tmp/mayAlreadyExistedData.json' const obj = { 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.

const jsonfile = require('jsonfile')

const file = '/tmp/data.json' const obj = { name: 'JP' }

jsonfile.writeFileSync(file, obj)

formatting with spaces:

const jsonfile = require('jsonfile')

const file = '/tmp/data.json' const obj = { name: 'JP' }

jsonfile.writeFileSync(file, obj, { spaces: 2 })

overriding EOL:

const jsonfile = require('jsonfile')

const file = '/tmp/data.json' const obj = { name: 'JP' }

jsonfile.writeFileSync(file, obj, { spaces: 2, EOL: '\r\n' })

disabling the EOL at the end of file:

const jsonfile = require('jsonfile')

const file = '/tmp/data.json' const obj = { 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.

const jsonfile = require('jsonfile')

const file = '/tmp/mayAlreadyExistedData.json' const obj = { name: 'JP' }

jsonfile.writeFileSync(file, obj, { flag: 'a' })

License -------

(MIT License)

Copyright 2012-2016, JP Richardson