uni-flatten
v1.6.4
Published
Flattens a nested object, or convert it back **perfectly**.
Downloads
10,348
Readme
Features
Installation
$ npm i --save uni-flatten
Inspiration
There are various popular modules to flatten an object, but they lost context such as numeric keys, dot in object key, special characters etc. These behaviors disabled converting flattened object to original object. This is when uni-flatten
becomes handy.
Quick Start
Flatten a nested object
import { flatten } from 'uni-flatten';
flatten({
a: {
b: {
c: 123,
},
d: [
{
e: { f: 456 },
},
],
},
'a.b.c': 789,
});
/*
result:
{
'a.b.c': 123, // normal nested object
'a.d[0].e.f': 456, // nested object array, use brackets to represent array index
'["a.b.c"]': 789, // object with special character in keys
},
*/
Unflatten a flat object
import { unflatten } from 'uni-flatten';
unflatten({
'a.b.c': 123, // normal nested object
'a.d[0].e.f': 456, // nested object array, use brackets to represent array index
'["a.b.c"]': 789, // object with special character in keys
});
/*
result:
{
a: {
b: {
c: 123,
},
d: [
{
e: { f: 456 },
},
],
},
'a.b.c': 789,
}
*/
Flatten a cyclic object
Circular references are serialized as [Circular->"<path>"]
when flattened, which is useful for unflattening.
import { flatten, unflatten } from 'uni-flatten';
const obj = { a: { b: { c: 1 } } };
obj.a.d = obj.a;
const flattened = flatten(obj); // { 'a.b.c': 1, 'a.d': '[Circular->"a"]' }
const restored = unflatten(obj); // { a: <ref *1> { b: { c: 1 }, d: [Circular *1] }
API
Please refer to our API website for full documentation.
Changelog
Please refer to changelog.md
License
MIT.