JSSTE/src/jsonMerger.js
2022-10-31 15:53:48 +01:00

50 lines
881 B
JavaScript

/**
* merge two JSONs
* @param {*} org
* @param {*} ext
* @returns
*/
function mergeJson(org, ext) {
if (!(typeof org === 'object' && org !== null)) {
org = JSON.parse(org);
}
if (!(typeof ext === 'object' && ext !== null)) {
ext = JSON.parse(ext);
}
Object.keys(ext).forEach(function (key) {
let value = ext[key];
if (Array.isArray(ext[key])) {
if (Array.isArray(org[key])) {
value.forEach((item) => {
org[key].push(item);
});
}
else {
org[key] = value;
}
} else {
org[key] = value;
}
});
return org;
}
/**
* Merge multiple JSONs
* @param {*} org
* @param {...any} ext
* @returns
*/
function mergeJsons(org, ...ext) {
ext.forEach((element) => {
org = mergeJson(org, element);
});
return { ...org };
}
module.exports = { mergeJson, mergeJsons };