readme.md
  1  # parse-json
  2  
  3  > Parse JSON with more helpful errors
  4  
  5  ## Install
  6  
  7  ```
  8  $ npm install parse-json
  9  ```
 10  
 11  ## Usage
 12  
 13  ```js
 14  const parseJson = require('parse-json');
 15  
 16  const json = '{\n\t"foo": true,\n}';
 17  
 18  
 19  JSON.parse(json);
 20  /*
 21  undefined:3
 22  }
 23  ^
 24  SyntaxError: Unexpected token }
 25  */
 26  
 27  
 28  parseJson(json);
 29  /*
 30  JSONError: Unexpected token } in JSON at position 16 while parsing near '{      "foo": true,}'
 31  
 32    1 | {
 33    2 |   "foo": true,
 34  > 3 | }
 35      | ^
 36  */
 37  
 38  
 39  parseJson(json, 'foo.json');
 40  /*
 41  JSONError: Unexpected token } in JSON at position 16 while parsing near '{      "foo": true,}' in foo.json
 42  
 43    1 | {
 44    2 |   "foo": true,
 45  > 3 | }
 46      | ^
 47  */
 48  
 49  
 50  // You can also add the filename at a later point
 51  try {
 52  	parseJson(json);
 53  } catch (error) {
 54  	if (error instanceof parseJson.JSONError) {
 55  		error.fileName = 'foo.json';
 56  	}
 57  
 58  	throw error;
 59  }
 60  /*
 61  JSONError: Unexpected token } in JSON at position 16 while parsing near '{      "foo": true,}' in foo.json
 62  
 63    1 | {
 64    2 |   "foo": true,
 65  > 3 | }
 66      | ^
 67  */
 68  ```
 69  
 70  ## API
 71  
 72  ### parseJson(string, reviver?, filename?)
 73  
 74  Throws a `JSONError` when there is a parsing error.
 75  
 76  #### string
 77  
 78  Type: `string`
 79  
 80  #### reviver
 81  
 82  Type: `Function`
 83  
 84  Prescribes how the value originally produced by parsing is transformed, before being returned. See [`JSON.parse` docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter
 85  ) for more.
 86  
 87  #### filename
 88  
 89  Type: `string`
 90  
 91  Filename displayed in the error message.
 92  
 93  ### parseJson.JSONError
 94  
 95  Exposed for `instanceof` checking.
 96  
 97  #### fileName
 98  
 99  Type: `string`
100  
101  The filename displayed in the error message.
102  
103  #### codeFrame
104  
105  Type: `string`
106  
107  The printable section of the JSON which produces the error.
108  
109  ---
110  
111  <div align="center">
112  	<b>
113  		<a href="https://tidelift.com/subscription/pkg/npm-parse-json?utm_source=npm-parse-json&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
114  	</b>
115  	<br>
116  	<sub>
117  		Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
118  	</sub>
119  </div>