Start · Sprachen · JavaScript · Snippets · JSON sicher parsen und serialisieren

JSON sicher parsen und serialisieren

JSON & Serialisierung

Parst JSON ohne Exception mit Fallback-Wert und entfernt __proto__-Schlüssel. Serialisiert auch zirkuläre Objekte und BigInt, ohne abzustürzen.

Code

// Parsen mit Fallback, entfernt __proto__/constructor (Schutz vor Prototype Pollution)
const safeParse = (text, fallback = null) => {
  if (typeof text !== 'string') return fallback;
  try {
    return JSON.parse(text, (k, v) =>
      k === '__proto__' || k === 'constructor' ? undefined : v);
  } catch {
    return fallback;
  }
};

// Serialisieren ohne TypeError bei Zyklen oder BigInt
const safeStringify = (value, space) => {
  const seen = new WeakSet(); // markiert auch mehrfach genutzte Referenzen
  try {
    return JSON.stringify(value, (k, v) => {
      if (typeof v === 'bigint') return v.toString();
      if (v && typeof v === 'object') {
        if (seen.has(v)) return '[Circular]';
        seen.add(v);
      }
      return v;
    }, space);
  } catch {
    return undefined;
  }
};

const obj = { id: 1n };
obj.self = obj;
console.log(safeStringify(obj));
console.log(safeParse('kaputt', {}));
{"id":"1","self":"[Circular]"} {}

Häufige Fragen

Darf ich dieses Snippet kopieren und produktiv einsetzen?

Ja — alle Code-Beispiele auf programmierung.net dürfen frei kopiert und angepasst werden. Prüfe vor dem Produktiv-Einsatz immer Edge-Cases (leere Eingaben, Encoding, Fehlerbehandlung) und die Lizenzvorgaben eingebundener Bibliotheken.

Welche JavaScript-Version wird vorausgesetzt?

Snippets zielen auf aktuelle, stabile JavaScript-Versionen. Versionsabhängige Features werden im Code oder in der Beschreibung ausgewiesen.

Wo finde ich weitere JavaScript-Snippets?

In der Seitenleiste siehst du alle Snippets dieser Sprache. Oder gehe zur JavaScript-Übersicht.