JSON-Daten (.json)
RFC StandardJavaScript 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:
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 5BASCII-DARSTELLUNG: { or [
Standardisierung: RFC 8259 / ECMA-404 / ISO/IEC 21778
Technische Daten
| Container-Architektur | Leichtgewichtiges, textbasiertes, sprachunabhängiges Datenaustauschformat |
| Kompression | Gzip- / Brotli- / Zstandard-Textkomprimierung (erzielt typischerweise ein Verhältnis von 80%-90%) |
| Byte-Reihenfolge | UTF-8-codiertes Unicode (Byte Order Mark / BOM wird nicht empfohlen) |
| Farbräume | Nicht zutreffend |
| Kanäle und Struktur | Sechs grundlegende Datentypen: Objekt, Array, Zeichenkette, Zahl, Boolescher Wert, null |
| Max. Abmessungen | Unbegrenzt; nur durch den Arbeitsspeicher des Parsers und die maximale Zeichenkettenlänge beschränkt |
| Transparenz | Nicht zutreffend |
| Streaming und progressive Darstellung | NDJSON (Newline Delimited JSON) / JSON Lines ermöglicht eine progressive Datenstromverarbeitung |
Technische Vergleichsmatrix: JSON und Konkurrenzformate
| Technisches Attribut | JSON (Aktuelles Format) | YAML | XML | Protocol Buffers |
|---|---|---|---|---|
| Syntaxkomplexität | Minimal (6 Typen, strenge Syntax) | Hoch (einrückungsbasiert, komplexe Spezifikation) | Hoch (ausführliche schließende Tags, Namensräume) | Binäres Format mit festgelegtem Schema |
| Parsing-Leistung | Extrem schnell in allen modernen Sprachen | Langsam (komplexes Einrückungs-Parsing) | Mäßig bis langsam (aufwendige DOM-Erstellung) | Ultraschnelle binäre Deserialisierung ohne Datenkopien |
| Unterstützte Kommentare | Nein (bewusst ausgeschlossen, um Metadatenwuchs zu verhindern) | Ja (#-Kommentare) | Ja (<!-- Kommentare -->) | Ja in .proto-Dateien |
| Größe der Netzwerknutzlast | Kompakter Text (sehr hohes Gzip-Verhältnis) | Kompakter Text | Ausfü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
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.
Passende JSON-Konvertierungen
Das Konvertieren von JSON-Daten in HTML-Quelltext verwandelt strukturierte Schlüssel-Wert-Paare in menschenlesbare Webdokumente, die für das Browser-Rendering bereitstehen.
Die Konvertierung von HTML-Quelltext in JSON-Daten wandelt menschenlesbare Webdokumente in strukturierte Schlüssel-Wert-Paare um, die programmgesteuert verarbeitet und in APIs eingelesen werden können.
Die Konvertierung eines SQL-Dump-Textskripts in einen JSON-Datenexport verwandelt starre relationale Datenbanktabellen in flexible, verschachtelte Objekte für moderne Webanwendungen.
Das Umwandeln unstrukturierter JSON-Textdateien in strukturierte relationale SQLite-Datenbanken ermöglicht eine schnelle Indizierung und Abfrage großer Datensätze.
Das Konvertieren von Adobe-Swatch-Exchange-Dateien in Farb-JSON-Strukturen transformiert binäre Designpaletten in lesbare Textobjekte für moderne Webanwendungen.
Die Umwandlung von Farb-JSON-Textdaten in binäre Adobe-ASE-Farbfelder verbindet webbasierte Designtokens mit professionellen Layoutprogrammen.
Das Konvertieren von GIMP-Paletten-Textdateien in Farb-JSON-Strukturen ermöglicht Webanwendungen das direkte Auslesen von Farbmustern ohne komplexe Parser-Skripte.
Das Konvertieren strukturierter Farb-JSON-Dateien in CSS-Variablen transformiert rohe Datenobjekte in native Stileigenschaften für Websites.