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', {}));
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.