flat

Creator: coderz1093

Last updated:

Add to Cart

Description:

flat

flat #
Take a nested Map and flatten it with delimited keys. Entirely based on node.js flat.

It does not achieve feature parity yet, as some options are missing from flatten (transformKey) and unflatten (object, overwrite, transformKey).


Currently, it bails out of a tree if it finds something different than a Map or List when flatening, or a nested Map or List when unflattening.

Methods #
flatten #
import 'package:flat/flat.dart';

flatten(
{
"a": 1,
"list1": ["item1", "item2"],
"f": {
"list2": ["item3", "item4", "item5"],
"g": 2,
"h": true,
"j": "text",
},
},
);

// {
// "a": 1,
// "list1.0": "item1",
// "list1.1": "item2",
// "f.list2.0": "item3",
// "f.list2.1": "item4",
// "f.list2.2": "item5",
// "f.g": 2,
// "f.h": true,
// "f.j": "text"
// }
copied to clipboard
delimiter
Use a custom delimiter for flattening your objects, instead of .
safe
When enabled, flat will preserve arrays and their contents. This is disabled by default.
import 'package:flat/flat.dart';

flatten({
'this': [
{'contains': 'arrays'},
{
'preserving': {'them': 'for you'}
}
]
}, safe: true);

// {
// 'this': [
// {'contains': 'arrays'},
// {
// 'preserving': {'them': 'for you'}
// }
// ]
// };
copied to clipboard
maxDepth
Maximum number of nested objects to flatten.
import 'package:flat/flat.dart';

flatten({
'key1': {'keyA': 'valueI'},
'key2': {'keyB': 'valueII'},
'key3': {
'a': {
'b': {'c': 2}
}
}
}, maxDepth: 2);

// {
// 'key1.keyA': 'valueI',
// 'key2.keyB': 'valueII',
// 'key3.a': {
// 'b': {'c': 2}
// }
// };
copied to clipboard
unflatten #
Reverse process from flatten.

Only supports completely flat maps as input.

unflatten({
"a": 1,
"list1.0": "item1",
"list1.1": "item2",
"f.list2.0": "item3",
"f.list2.1": "item4",
"f.list2.2": "item5",
"f.g": 2,
"f.h": true,
"f.j": "text"
});

// {
// "a": 1,
// "list1": ["item1", "item2"],
// "f": {
// "list2": ["item3", "item4", "item5"],
// "g": 2,
// "h": true,
// "j": "text",
// },
// }
copied to clipboard
delimiter
Use a custom delimiter for unflattening your objects, instead of .

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.