/**
* Teardowns processes of JSON payloads for data migration with default values.
*
* @param {object} data The JSON payload to process.
* @param {object} defaults An object containing default values for missing keys.
* @returns {object} The processed JSON object with default values applied.
*/
function teardownJson(data, defaults) {
if (typeof data !== 'object' || data === null) {
return data; // Return non-object data as is.
}
const processedData = { ...data }; // Create a shallow copy to avoid modifying the original
for (const key in defaults) {
if (defaults.hasOwnProperty(key) && !processedData.hasOwnProperty(key)) {
processedData[key] = defaults[key]; // Apply default value if key is missing.
}
}
for (const key in processedData) {
if (typeof processedData[key] === 'object' && processedData[key] !== null) {
processedData[key] = teardownJson(processedData[key], defaults); // Recursively process nested objects.
}
}
return processedData;
}
export default teardownJson;
Add your comment