safe-stringify
Version:
Serialize objects to JSON with handling for circular references
63 lines (35 loc) • 1.4 kB
Markdown
# safe-stringify
> Serialize objects to JSON with handling for circular references
`JSON.stringify()` throws an error if the object contains circular references. This package replaces circular references with `"[Circular]"`.
## Install
```sh
npm install safe-stringify
```
## Usage
```js
import safeStringify from 'safe-stringify';
const foo = {a: true};
foo.b = foo;
console.log(safeStringify(foo));
//=> '{"a":true,"b":"[Circular]"}'
console.log(JSON.stringify(foo));
//=> TypeError: Converting circular structure to JSON
```
## API
### safeStringify(value, options?)
Returns a string.
*Note: There is no `replacer` option as I didn't need that, but “pull request welcome” if you need it.*
#### value
Type: `unknown`
The value to convert to a JSON string.
#### options
Type: `object`
##### indentation
Type: `'string' | 'number'`
The indentation of the JSON.
By default, the JSON is not indented. Set it to `'\t'` for tab indentation or the number of spaces you want.
## FAQ
### Why another safe stringify package?
The existing ones either did too much, did it incorrectly, or used inefficient code (not using `WeakSet`). For example, many packages incorrectly replaced all duplicate objects, not just circular references, and did not handle circular arrays.
## Related
- [decircular](https://github.com/sindresorhus/decircular) - Remove circular references from objects