JSON-zu-JavaScript-Objekt-Konverter

Striktes JSON lässt sich mit JSON.parse in ein JavaScript-Objekt umwandeln. JavaScript-Objektliterale müssen erst bereinigt werden, bevor sie gültiges JSON sind.

JSON in JavaScript konvertieren

Wenn die Eingabe bereits gültiges JSON ist, ist JSON.parse(jsonText) der sicherste Konverter. Er liefert ein gewöhnliches JavaScript-Objekt, Array, einen String, eine Zahl, einen Boolean oder null zurück, ohne Code auszuführen.

JSON-Eingabe

{ "name": "Ada", "active": true, "skills": ["math", "notes"] }

Verwendung in JavaScript

const user = JSON.parse(jsonText); console.log(user.name);

Objektliteral als Eingabe ist anders

Ein JavaScript-Objektliteral wie { name: 'Ada', active: true } ist kein JSON. Vor JSON.parse müssen fehlende Anführungszeichen an Schlüsseln, einfache Anführungszeichen, Kommentare und Trailing Commas behoben werden.

Wann eval zu vermeiden ist

Verwende eval nicht, um unbekannten Text in ein Objekt zu verwandeln. eval führt Code aus, JSON.parse parst nur Daten — deshalb ist striktes JSON für API-Payloads, Konfiguration, Logs und eingefügte Beispiele sicherer.

Randfälle: Daten, undefined und Funktionen

JSON kennt keinen Date-, undefined- oder Funktionstyp. Daten reisen als ISO-Strings, undefined-Werte werden beim Stringify entfernt und Funktionen lassen sich gar nicht abbilden. Enthält ein JavaScript-Objekt solche Werte, ist das resultierende JSON eine verlustbehaftete Momentaufnahme — stelle Typen mit einer reviver-Funktion in JSON.parse explizit wieder her.

TypeScript und inferierte Typen

JSON.parse liefert 'any', weil der Parser die Form nicht vorher kennen kann. Für typisierten Zugriff entweder einen Return-Type deklarieren (JSON.parse(text) as User), nach Validierung mit einer Schema-Library wie zod oder io-ts, oder ein Interface aus einem Sample mit dem JSON-zu-TypeScript-Tool generieren.

Die andere Richtung: Objekt zu JSON

JSON.stringify(value, null, 2) erzeugt formatiertes JSON aus einem JavaScript-Wert. undefined, Funktionen und Symbol-Keys werden stillschweigend entfernt; zirkuläre Referenzen werfen eine Exception. Ein replacer als zweites Argument steuert, welche Felder erhalten bleiben — nützlich, um Interna vor dem Senden eines Objekts über die Leitung zu entfernen.