Serialize objects to JSON with handling for circular references
npm install 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]".
``sh`
npm install safe-stringify
`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
`
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.
##### trace
Type: boolean
Include the full object path in circular reference markers, like [Circular *a.b].
`js
import safeStringify from 'safe-stringify';
const bar = {a: {b: {}}};
bar.a.b.c = bar.a;
console.log(safeStringify(bar, {trace: true}));
//=> '{"a":{"b":{"c":"[Circular *a]"}}}'
`
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.
- decircular - Remove circular references from objects