@opengis/fastify-table
Version:
core-plugins
29 lines (28 loc) • 1.16 kB
JavaScript
/* eslint-disable no-param-reassign */
export default function unflattenObject(flatObj) {
return Object.keys(flatObj || {}).reduce((acc, key) => {
const keys = key.split('.');
keys.reduce((nestedObj, part, index) => {
if (index === keys.length - 1) {
// json array
if (typeof flatObj[key] === 'string' && flatObj[key].startsWith('[')) {
try {
nestedObj[part] = JSON.parse(flatObj[key]);
}
catch (err) {
console.error(`Error parsing JSON for key ${key}:`, err);
nestedObj[part] = flatObj[key]; // fallback to original value if parsing fails
}
}
else {
nestedObj[part] = ['true', 'false'].includes(flatObj[key]) ? JSON.parse(flatObj[key]) : flatObj[key];
}
}
else {
nestedObj[part] = nestedObj[part] || {};
}
return nestedObj[part];
}, acc);
return acc;
}, {});
}