Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/moll/json-stringify-safe
Like JSON.stringify, but doesn't throw on circular references
https://github.com/moll/json-stringify-safe
Last synced: 5 days ago
JSON representation
Like JSON.stringify, but doesn't throw on circular references
- Host: GitHub
- URL: https://github.com/moll/json-stringify-safe
- Owner: moll
- License: isc
- Created: 2013-02-19T19:01:30.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2024-07-25T15:46:34.000Z (5 months ago)
- Last Synced: 2024-12-06T23:00:34.612Z (5 days ago)
- Language: JavaScript
- Homepage:
- Size: 31.3 KB
- Stars: 553
- Watchers: 17
- Forks: 50
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- my-awesome-list - json-stringify-safe
- awesome-nodejs - json-stringify-safe - Like JSON.stringify, but doesn't throw on circular references. ![](https://img.shields.io/github/stars/moll/json-stringify-safe.svg?style=social&label=Star) (Repository / Object / JSON / JSON Schema)
- awesome-github-star - json-stringify-safe
README
# json-stringify-safe
Like JSON.stringify, but doesn't throw on circular references.
## Usage
Takes the same arguments as `JSON.stringify`.
```javascript
var stringify = require('json-stringify-safe');
var circularObj = {};
circularObj.circularRef = circularObj;
circularObj.list = [ circularObj, circularObj ];
console.log(stringify(circularObj, null, 2));
```Output:
```json
{
"circularRef": "[Circular]",
"list": [
"[Circular]",
"[Circular]"
]
}
```## Details
```
stringify(obj, serializer, indent, decycler)
```The first three arguments are the same as to JSON.stringify. The last
is an argument that's only used when the object has been seen already.The default `decycler` function returns the string `'[Circular]'`.
If, for example, you pass in `function(k,v){}` (return nothing) then it
will prune cycles. If you pass in `function(k,v){ return {foo: 'bar'}}`,
then cyclical objects will always be represented as `{"foo":"bar"}` in
the result.```
stringify.getSerialize(serializer, decycler)
```Returns a serializer that can be used elsewhere. This is the actual
function that's passed to JSON.stringify.**Note** that the function returned from `getSerialize` is stateful for now, so
do **not** use it more than once.