sfcode
An Online Competing and Development Environment
|
json-parse-even-better-errors
is a Node.js library for getting nicer errors out of JSON.parse()
, including context and position of the parse errors.
It also preserves the newline and indentation styles of the JSON data, by putting them in the object or array in the ‘Symbol.for('indent’)and
Symbol.for('newline')` properties.
$ npm install --save json-parse-even-better-errors
noExceptions
method that returns undefined rather than throwing.To preserve indentation when the file is saved back to disk, use ‘data[Symbol.for('indent’)]as the third argument to
JSON.stringify<tt>, and if you want to preserve windows\r
newlines, replace the
chars in the string with
data[Symbol.for('newline')]`.
For example:
Indentation is determined by looking at the whitespace between the initial {
and [
and the character that follows it. If you have lots of weird inconsistent indentation, then it won't track that or give you any way to preserve it. Whether this is a bug or a feature is debatable ;)
Works just like JSON.parse
, but will include a bit more information when an error happens, and attaches a ‘Symbol.for('indent’)and
Symbol.for('newline')on objects and arrays. This throws a
JSONParseError`.
Works just like JSON.parse
, but will return undefined
rather than throwing an error.
Extends the JavaScript SyntaxError
class to parse the message and provide better metadata.
Pass in the error thrown by the built-in JSON.parse
, and the text being parsed, and it'll parse out the bits needed to be helpful.
context
defaults to 20.
Set a caller
function to trim internal implementation details out of the stack trace. When calling parseJson
, this is set to the parseJson
function. If not set, then the constructor defaults to itself, so the stack trace will point to the spot where you call new JSONParseError
.