Files
30-seconds-of-code/snippets/circularJSONStringify.md
2020-10-06 11:27:49 +03:00

664 B

title, tags
title tags
circularJSONStringify object,intermediate

Serializes valid JSON objects containing circular references into a JSON format.

  • Use JSON.stringify with a custom replacer
  • ⚠️ NOTICE: This function finds and removes circular references, what causes data loss
const circularJSONStringify = object => {
  const cache = new WeakSet();
  return JSON.stringify(object, (key, value) => {
    if (value !== null && typeof value === 'object') {
      if (cache.has(value)) return;

      cache.add(value);
    }
    return value;
  });
};
const obj = { n: 42 };
obj.obj = obj;

circularJSONStringify(obj); // '{"n": 42}'