169 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			169 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | Node.js - jsonfile | ||
|  | ================ | ||
|  | 
 | ||
|  | Easily read/write JSON files. | ||
|  | 
 | ||
|  | [](https://www.npmjs.org/package/jsonfile) | ||
|  | [](http://travis-ci.org/jprichardson/node-jsonfile) | ||
|  | [](https://ci.appveyor.com/project/jprichardson/node-jsonfile/branch/master) | ||
|  | 
 | ||
|  | <a href="https://github.com/feross/standard"><img src="https://cdn.rawgit.com/feross/standard/master/sticker.svg" alt="Standard JavaScript" width="100"></a> | ||
|  | 
 | ||
|  | 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](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse). | ||
|  |   - `throws` (`boolean`, default: `true`). If `JSON.parse` throws an error, pass this error to the callback. | ||
|  |   If `false`, returns `null` for the object. | ||
|  | 
 | ||
|  | 
 | ||
|  | ```js | ||
|  | var jsonfile = require('jsonfile') | ||
|  | var file = '/tmp/data.json' | ||
|  | jsonfile.readFile(file, function(err, obj) { | ||
|  |   console.dir(obj) | ||
|  | }) | ||
|  | ``` | ||
|  | 
 | ||
|  | 
 | ||
|  | ### readFileSync(filename, [options])
 | ||
|  | 
 | ||
|  | `options` (`object`, default `undefined`): Pass in any `fs.readFileSync` options or set `reviver` for a [JSON reviver](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse). | ||
|  | - `throws` (`boolean`, default: `true`). If an error is encountered reading or parsing the file, throw the error. If `false`, returns `null` for the object. | ||
|  | 
 | ||
|  | ```js | ||
|  | var jsonfile = require('jsonfile') | ||
|  | var 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](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). Can also pass in `spaces` and override `EOL` string. | ||
|  | 
 | ||
|  | 
 | ||
|  | ```js | ||
|  | var jsonfile = require('jsonfile') | ||
|  | 
 | ||
|  | var file = '/tmp/data.json' | ||
|  | var obj = {name: 'JP'} | ||
|  | 
 | ||
|  | jsonfile.writeFile(file, obj, function (err) { | ||
|  |   console.error(err) | ||
|  | }) | ||
|  | ``` | ||
|  | 
 | ||
|  | **formatting with spaces:** | ||
|  | 
 | ||
|  | ```js | ||
|  | var jsonfile = require('jsonfile') | ||
|  | 
 | ||
|  | var file = '/tmp/data.json' | ||
|  | var obj = {name: 'JP'} | ||
|  | 
 | ||
|  | jsonfile.writeFile(file, obj, {spaces: 2}, function(err) { | ||
|  |   console.error(err) | ||
|  | }) | ||
|  | ``` | ||
|  | 
 | ||
|  | **overriding EOL:** | ||
|  | 
 | ||
|  | ```js | ||
|  | var jsonfile = require('jsonfile') | ||
|  | 
 | ||
|  | var file = '/tmp/data.json' | ||
|  | var obj = {name: 'JP'} | ||
|  | 
 | ||
|  | jsonfile.writeFile(file, obj, {spaces: 2, EOL: '\r\n'}, function(err) { | ||
|  |   console.error(err) | ||
|  | }) | ||
|  | ``` | ||
|  | 
 | ||
|  | **appending to an existing JSON file:** | ||
|  | 
 | ||
|  | You can use `fs.writeFile` option `{flag: 'a'}` to achieve this. | ||
|  | 
 | ||
|  | ```js | ||
|  | var jsonfile = require('jsonfile') | ||
|  | 
 | ||
|  | var file = '/tmp/mayAlreadyExistedData.json' | ||
|  | var obj = {name: 'JP'} | ||
|  | 
 | ||
|  | jsonfile.writeFile(file, obj, {flag: 'a'}, function (err) { | ||
|  |   console.error(err) | ||
|  | }) | ||
|  | ``` | ||
|  | 
 | ||
|  | ### writeFileSync(filename, obj, [options])
 | ||
|  | 
 | ||
|  | `options`: Pass in any `fs.writeFileSync` options or set `replacer` for a [JSON replacer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). Can also pass in `spaces` and override `EOL` string. | ||
|  | 
 | ||
|  | ```js | ||
|  | var jsonfile = require('jsonfile') | ||
|  | 
 | ||
|  | var file = '/tmp/data.json' | ||
|  | var obj = {name: 'JP'} | ||
|  | 
 | ||
|  | jsonfile.writeFileSync(file, obj) | ||
|  | ``` | ||
|  | 
 | ||
|  | **formatting with spaces:** | ||
|  | 
 | ||
|  | ```js | ||
|  | var jsonfile = require('jsonfile') | ||
|  | 
 | ||
|  | var file = '/tmp/data.json' | ||
|  | var obj = {name: 'JP'} | ||
|  | 
 | ||
|  | jsonfile.writeFileSync(file, obj, {spaces: 2}) | ||
|  | ``` | ||
|  | 
 | ||
|  | **overriding EOL:** | ||
|  | 
 | ||
|  | ```js | ||
|  | var jsonfile = require('jsonfile') | ||
|  | 
 | ||
|  | var file = '/tmp/data.json' | ||
|  | var obj = {name: 'JP'} | ||
|  | 
 | ||
|  | jsonfile.writeFileSync(file, obj, {spaces: 2, EOL: '\r\n'}) | ||
|  | ``` | ||
|  | 
 | ||
|  | **appending to an existing JSON file:** | ||
|  | 
 | ||
|  | You can use `fs.writeFileSync` option `{flag: 'a'}` to achieve this. | ||
|  | 
 | ||
|  | ```js | ||
|  | var jsonfile = require('jsonfile') | ||
|  | 
 | ||
|  | var file = '/tmp/mayAlreadyExistedData.json' | ||
|  | var obj = {name: 'JP'} | ||
|  | 
 | ||
|  | jsonfile.writeFileSync(file, obj, {flag: 'a'}) | ||
|  | ``` | ||
|  | 
 | ||
|  | License | ||
|  | ------- | ||
|  | 
 | ||
|  | (MIT License) | ||
|  | 
 | ||
|  | Copyright 2012-2016, JP Richardson  <jprichardson@gmail.com> |