83 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			83 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								# readJson(file, [options, callback])
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Reads a JSON file and then parses it into an object. `options` are the same
							 | 
						||
| 
								 | 
							
								that you'd pass to [`jsonFile.readFile`](https://github.com/jprichardson/node-jsonfile#readfilefilename-options-callback).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**Alias:** `readJSON()`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- `file` `<String>`
							 | 
						||
| 
								 | 
							
								- `options` `<Object>`
							 | 
						||
| 
								 | 
							
								- `callback` `<Function>`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Example:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								const fs = require('fs-extra')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// With a callback:
							 | 
						||
| 
								 | 
							
								fs.readJson('./package.json', (err, packageObj) => {
							 | 
						||
| 
								 | 
							
								  if (err) console.error(err)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  console.log(packageObj.version) // => 0.1.3
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// With Promises:
							 | 
						||
| 
								 | 
							
								fs.readJson('./package.json')
							 | 
						||
| 
								 | 
							
								.then(packageObj => {
							 | 
						||
| 
								 | 
							
								  console.log(packageObj.version) // => 0.1.3
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								.catch(err => {
							 | 
						||
| 
								 | 
							
								  console.error(err)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// With async/await:
							 | 
						||
| 
								 | 
							
								async function example () {
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    const packageObj = await fs.readJson('./package.json')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    console.log(packageObj.version) // => 0.1.3
							 | 
						||
| 
								 | 
							
								  } catch (err) {
							 | 
						||
| 
								 | 
							
								    console.error(err)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								example()
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`readJson()` can take a `throws` option set to `false` and it won't throw if the JSON is invalid. Example:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								const fs = require('fs-extra')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const file = '/tmp/some-invalid.json'
							 | 
						||
| 
								 | 
							
								const data = '{not valid JSON'
							 | 
						||
| 
								 | 
							
								fs.writeFileSync(file, data)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// With a callback:
							 | 
						||
| 
								 | 
							
								fs.readJson(file, { throws: false }, (err, obj) => {
							 | 
						||
| 
								 | 
							
								  if (err) console.error(err)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  console.log(obj) // => null
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Wtih Promises:
							 | 
						||
| 
								 | 
							
								fs.readJson(file, { throws: false })
							 | 
						||
| 
								 | 
							
								.then(obj => {
							 | 
						||
| 
								 | 
							
								  console.log(obj) // => null
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								.catch(err => {
							 | 
						||
| 
								 | 
							
								  console.error(err) // Not called
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// With async/await:
							 | 
						||
| 
								 | 
							
								async function example (f) {
							 | 
						||
| 
								 | 
							
								  const obj = await fs.readJson(f, { throws: false })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  console.log(obj) // => null
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								example(file)
							 | 
						||
| 
								 | 
							
								```
							 |