flatted
A fast and minimal circular JSON parser.
Usable via CDN or as regular module.
import {parse, stringify} from 'flatted/esm';
const {parse, stringify} = require('flatted/cjs');
const a = [{}];
a[0].a = a;
a.push(a);
stringify(a);
Compatibility
All ECMAScript engines compatible with Map
, Set
, Object.keys
, and Array.prototype.reduce
will work, even if polyfilled.
How does it work ?
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
var a = [{one: 1}, {two: '2'}];
a[0].a = a;
Flatted.stringify(a);
Why not CircularJSON ?
If approved by the community, this project will be the core of CircularJSON V2.
The main reasons for having this software a part are:
- battle-testing against all complex cases before releasing CircularJSON V2
- provide a minimal parser without extra complexity needed by revivers and replacers
- give developers a way to compare the two formats (on average, with big structures, smaller with flatted)
Once satisfied by feedbacks and results, there will be a version of this project fully compatible with JSON API.