An open API service indexing awesome lists of open source software.

https://github.com/sindresorhus/safe-stringify

Serialize objects to JSON with handling for circular references
https://github.com/sindresorhus/safe-stringify

Last synced: 3 months ago
JSON representation

Serialize objects to JSON with handling for circular references

Awesome Lists containing this project

README

        

# 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