Skip to content

Commit 7c6298e

Browse files
#28 patched up preserve parent path gen in flattenObject()
1 parent 2ff6a70 commit 7c6298e

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

src/utils/json.utils.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,25 @@ const logger: Logger = new Logger(`json.utils:`, config.logLevel);
1010
* Flattens objects with nested properties for data view display.
1111
* @param obj Object to flatten.
1212
* @param preservePath Optional flag for generating key path.
13-
* @param path Parent key path.
13+
* @param parentPath Parent key path.
1414
* @returns Flat Object.
1515
*/
16-
export function flattenObject (obj: any, preservePath: boolean = false, path: string = ''): any {
16+
export function flattenObject (obj: any, preservePath: boolean = false, parentPath: string = ''): any {
1717
const flatObject: any = {};
1818
Object.keys(obj).forEach((key) => {
19+
if (preservePath) {
20+
if (parentPath.length > 0) {
21+
parentPath = `${parentPath}.${key}`;
22+
} else {
23+
parentPath = key;
24+
}
25+
}
1926
if (typeof obj[key] === 'object' && obj[key] !== null) {
20-
Object.assign(flatObject, this.flattenObject(obj[key]), preservePath, path);
27+
let children: any = {};
28+
Object.assign(children, this.flattenObject(obj[key], preservePath, parentPath));
29+
Object.keys(children).forEach(childKey => {
30+
flatObject[`${parentPath}.${childKey}`] = children[childKey];
31+
});
2132
} else {
2233
flatObject[key] = obj[key];
2334
}

0 commit comments

Comments
 (0)