A super light (0.5K) and fast circular JSON parser, directly from the creator of CircularJSON.
Usable via CDN or as regular module.
// ESM import {parse, stringify} from 'flatted/esm'; // CJS const {parse, stringify} = require('flatted/cjs'); const a = [{}]; a[0].a = a; a.push(a); stringify(a); // [["1","0"],{"a":"0"}]
.parse(string, reviver)
and revive your own objects.space
parameter to .stringify(object, replacer, space)
for feature parity with JSON signature.All ECMAScript engines compatible with Map
, Set
, Object.keys
, and Array.prototype.reduce
will work, even if polyfilled.
While stringifying, all Objects, including Arrays, and strings, are flattened out and replaced as unique index. *
Once parsed, all indexes will be replaced through the flattened collection.
*
represented as string to avoid conflicts with numbers
// logic example var a = [{one: 1}, {two: '2'}]; a[0].a = a; // a is the main object, will be at index '0' // {one: 1} is the second object, index '1' // {two: '2'} the third, in '2', and it has a string // which will be found at index '3' Flatted.stringify(a); // [["1","2"],{"one":1,"a":"0"},{"two":"3"},"2"] // a[one,two] {one: 1, a} {two: '2'} '2'