JSON-Daten (.json)

RFC Standard

JavaScript Object Notation (JSON) ist ein leichtgewichtiges, menschenlesbares Textformat für den Datenaustausch, das vollständig sprachunabhängig und universell für Web-APIs im Einsatz ist.

Von JSON zu HTML konvertieren

Kostenloser Konverter von JSON zu HTML im Browser. Konvertieren Sie Dateien sofort auf Ihrem Gerät.

JSON online komprimieren

Privat - Dateien verlassen Ihr Gerät nie

Untersuchen & Metadaten

Betriebssysteme und Dateianalyseprogramme identifizieren JSON-Dateien anhand der führenden binären Bytefolge:

Dateien auswählen oder hierher ziehen

Privat - Dateien verlassen Ihr Gerät nie

oder einfügen Strg+V
Datenschutzgarantie ohne Netzwerkübertragung: 0 Bytes an externe Server hochgeladen. Die gesamte Verarbeitung erfolgt lokal in Ihrer Browser-Sandbox.

Headersignatur auf Byte-Ebene (Magic Bytes)

Betriebssysteme und Dateianalyseprogramme identifizieren JSON-Dateien anhand der führenden binären Bytefolge:

HEX-SIGNATUR (OFFSET 0):

7B or 5B

ASCII-DARSTELLUNG: { or [

Standardisierung: RFC 8259 / ECMA-404 / ISO/IEC 21778

Technische Daten

Container-ArchitekturLeichtgewichtiges, textbasiertes, sprachunabhängiges Datenaustauschformat
KompressionGzip- / Brotli- / Zstandard-Textkomprimierung (erzielt typischerweise ein Verhältnis von 80%-90%)
Byte-ReihenfolgeUTF-8-codiertes Unicode (Byte Order Mark / BOM wird nicht empfohlen)
FarbräumeNicht zutreffend
Kanäle und StrukturSechs grundlegende Datentypen: Objekt, Array, Zeichenkette, Zahl, Boolescher Wert, null
Max. AbmessungenUnbegrenzt; nur durch den Arbeitsspeicher des Parsers und die maximale Zeichenkettenlänge beschränkt
TransparenzNicht zutreffend
Streaming und progressive DarstellungNDJSON (Newline Delimited JSON) / JSON Lines ermöglicht eine progressive Datenstromverarbeitung

Technische Vergleichsmatrix: JSON und Konkurrenzformate

Technisches AttributJSON (Aktuelles Format)YAMLXMLProtocol Buffers
SyntaxkomplexitätMinimal (6 Typen, strenge Syntax)Hoch (einrückungsbasiert, komplexe Spezifikation)Hoch (ausführliche schließende Tags, Namensräume)Binäres Format mit festgelegtem Schema
Parsing-LeistungExtrem schnell in allen modernen SprachenLangsam (komplexes Einrückungs-Parsing)Mäßig bis langsam (aufwendige DOM-Erstellung)Ultraschnelle binäre Deserialisierung ohne Datenkopien
Unterstützte KommentareNein (bewusst ausgeschlossen, um Metadatenwuchs zu verhindern)Ja (#-Kommentare)Ja (<!-- Kommentare -->)Ja in .proto-Dateien
Größe der NetzwerknutzlastKompakter Text (sehr hohes Gzip-Verhältnis)Kompakter TextAusführlicher Text (starke Tag-Wiederholung)Ultrakompaktes Binärformat

Häufige Datenbeschädigungen und Leitfaden zur Wiederherstellung anhand von Hex-Daten

Syntaxfehler: Unerwartetes Token , an Position X in JSON.

Ursache: Ein nachfolgendes Komma nach dem letzten Element in einem Array oder Objekt, was laut RFC 8259 strengstens verboten ist.

Wiederherstellung: Entfernen Sie nachgestellte Kommas nach dem letzten Element eines Objekts oder Arrays, bevor Sie diese an JSON.parse() übergeben.

Syntaxfehler: Unerwartetes Token ' in JSON.

Ursache: Zeichenketten oder Schlüssel in einfachen Anführungszeichen ('') anstelle von doppelten Anführungszeichen ("").

Wiederherstellung: Ersetzen Sie alle einfach in Anführungszeichen gefassten Zeichenketten und Schlüssel durch standardmäßige doppelt in Anführungszeichen gefasste Zeichenketten.

Sicherheitsanalyse und Angriffsvektoren für Parser

JSON besteht ausschließlich aus Text und ist sicher vor direkter Codeausführung. Das Parsen von nicht vertrauenswürdigem JSON kann jedoch zu Prototypenverschmutzung (Prototype Pollution), ReDoS oder Speichererschöpfung führen.

Bekannte Angriffsvektoren

  • Prototypenverschmutzung (Prototype Pollution): Schlüssel mit den Namen '__proto__' oder 'constructor', die Object.prototype in JavaScript-Anwendungen modifizieren.
  • Denial of Service durch Stapelüberlauf (Stack Overflow) infolge tief verschachtelter JSON-Strukturen (z. B. 10.000 öffnende Klammern).
  • Verlust der numerischen Genauigkeit: JavaScript-Zahlen, die größer sind als 2^53 - 1 (9.007.199.254.740.991), verlieren unbemerkt an Präzision.

Empfohlene Schutzmaßnahmen: Werten Sie JSON niemals mit eval() aus. Verwenden Sie stattdessen JSON.parse() und bereinigen Sie '__proto__'-Eigenschaften in rekursiven Objektzusammenführungsfunktionen.

Historische Ursprünge & Meilensteine

2017RFC 8259 standardisiert UTF-8 als die einzig verbindliche Zeichenkodierung für JSON.
2013ECMA-404 definiert die JSON-Syntax, die von vielen Programmiersprachen und Plattformen verwendet wird.
2001Douglas Crockford spezifiziert JSON, um eine zustandslose Browser-Server-Kommunikation zu ermöglichen.

Hauptvorteile & Stärken

  • Menschenlesbare, selbsterklärende und prägnante Textstruktur.
  • Native Parsing-Unterstützung, integriert in JavaScript-Engines (JSON.parse) sowie in jede gängige Programmiersprache.
  • Eine strenge Spezifikation verhindert die Ausführung von willkürlichem Code.

Technische Einschränkungen & Nachteile

  • Keine Unterstützung für Kommentare, abschließende Kommas oder zirkuläre Objektverweise.
  • Keine nativen Binärtypen (Binärdaten müssen Base64-kodiert werden, wodurch die Größe um 33 % zunimmt).
  • Ineffiziente Serialisierung im Vergleich zu Binärformaten wie Protocol Buffers oder MessagePack.

Interessante technische Fakten

  • Douglas Crockford fügte den Lizenzklauselzusatz „Die Software darf für das Gute und nicht für das Böse verwendet werden“ zu den ursprünglichen JSMin-JSON-Werkzeugen hinzu.
  • JSON ist eine strikte Teilmenge der JavaScript-Syntax, jedoch waren bis ES2019 rohe, unmaskierte U+2028- und U+2029-Zeichen in JSON gültig, aber in JavaScript-Zeichenketten ungültig.
  • Douglas Crockford entdeckte, dass frühe Webbrowser JSON direkt mithilfe von JavaScripts nativem eval() in Objekte auswerten konnten, bevor spezielle JSON.parse()-APIs in ECMAScript 5 standardisiert wurden.

Häufig gestellte technische Fragen

Warum erlaubt JSON keine Kommentare?

Die JSON-Grammatik erlaubt keine Kommentare. Implementierungen können Erweiterungen und anwendungsspezifische Daten unterschiedlich behandeln, daher garantiert das Format allein keine Interoperabilität.

Wie speichert man 64-Bit-Ganzzahlen in JSON, ohne an Präzision zu verlieren?

Der native Number-Typ von JavaScript ist eine Gleitkommazahl mit doppelter Genauigkeit nach IEEE 754, die Ganzzahlen nur bis 2^53 - 1 präzise unterstützt. 64-Bit-Ganzzahlen (wie Datenbank-IDs oder Zeitstempel) müssen in JSON als Zeichenketten serialisiert werden (z. B. '1234567890123456789').

Was ist der Unterschied zwischen JSON und NDJSON / JSON Lines?

Standard-JSON verpackt eine gesamte Nutzlast in ein einziges Stammobjekt oder -array, was Parser dazu zwingt, den gesamten Text vor der Auswertung zu laden. NDJSON (Newline Delimited JSON) trennt einzelne gültige JSON-Datensätze durch Zeilenumbruchzeichen (\n) und ermöglicht so ein speichereffizientes zeilenweises Streaming von riesigen Datensätzen im Gigabyte-Bereich.