JSON vs. JavaScript-Objektliteral

JSON sieht aus wie ein JavaScript-Objektliteral, ist aber ein kleineres Datenformat mit strengerer Syntax und ohne ausführbare Werte.

Die kurze Version

Ein JavaScript-Objektliteral ist Quellcode. JSON ist ein Datenaustauschformat. Die Überschneidung ist groß genug, um zu verwirren, die Regeln sind aber unterschiedlich: JSON-Schlüssel und -Strings brauchen doppelte Anführungszeichen, JSON kennt keine Kommentare und JSON kann keine Funktionen, undefined, NaN, Infinity, Date-Objekte oder reguläre Ausdrücke darstellen.

Gültige JSON-Werte

Ein JSON-Dokument kann ein Objekt, Array, einen String, eine Zahl, einen Boolean oder null enthalten. Strings brauchen doppelte Anführungszeichen. Auch Objekt-Schlüssel müssen Strings in doppelten Anführungszeichen sein. Zahlen dürfen keine JavaScript-spezifischen Formen verwenden, wie Hex, NaN, Infinity oder Zahlentrennzeichen.

  • Gültiger JSON-String: "hello"
  • Gültiger JSON-Boolean: true
  • Gültiges JSON-Null: null
  • Gültiger JSON-Objektschlüssel: "name"

Gültiges JavaScript, aber ungültiges JSON

{ name: 'Ada', active: true, createdAt: new Date(), onSave() { return true }, tags: ['dev',], }

Gültige JSON-Version

{ "name": "Ada", "active": true, "createdAt": "2026-05-13T00:00:00.000Z", "tags": ["dev"] }

Warum APIs JavaScript-ähnliche Daten ablehnen

API-Server parsen Request-Bodies meist mit einem JSON-Parser, nicht mit einer JavaScript-Engine. Das ist ein Sicherheits- und Interoperabilitäts-Feature: jede Sprache kann dieselben Daten parsen, ohne Code auszuführen. Enthält ein Body Kommentare, Methoden, undefined oder new Date(), kann der Server ihn nicht sicher als reine Daten behandeln.

Wie man sicher konvertiert

Ersetze ausführbare oder sprachspezifische Werte durch reine Daten. Daten werden zu Strings, fehlende Werte zu null oder weggelassenen Schlüsseln, Kommentare wandern in die Dokumentation, Funktionen werden durch explizite Datenfelder wie einen Strategie-Namen oder Typwert repräsentiert.