1. /**
  2. * Teardowns processes of JSON payloads for data migration with default values.
  3. *
  4. * @param {object} data The JSON payload to process.
  5. * @param {object} defaults An object containing default values for missing keys.
  6. * @returns {object} The processed JSON object with default values applied.
  7. */
  8. function teardownJson(data, defaults) {
  9. if (typeof data !== 'object' || data === null) {
  10. return data; // Return non-object data as is.
  11. }
  12. const processedData = { ...data }; // Create a shallow copy to avoid modifying the original
  13. for (const key in defaults) {
  14. if (defaults.hasOwnProperty(key) && !processedData.hasOwnProperty(key)) {
  15. processedData[key] = defaults[key]; // Apply default value if key is missing.
  16. }
  17. }
  18. for (const key in processedData) {
  19. if (typeof processedData[key] === 'object' && processedData[key] !== null) {
  20. processedData[key] = teardownJson(processedData[key], defaults); // Recursively process nested objects.
  21. }
  22. }
  23. return processedData;
  24. }
  25. export default teardownJson;

Add your comment