Definition „JavaScript Object Notation“ Was ist JSON?

Autor / Redakteur: LineFeed / Stephan Augsten

JSON bietet einen einfachen Standard für die strukturierte Kodierung von Daten in Form von menschenlesbarem Text. Dies bietet Vorteile bei einer automatisierten Weiterverarbeitung, macht sie aber auch einer manuellen Inspektion und Überarbeitung besser zugänglich.

Anbieter zum Thema

Das Datenaustauschformat JSON soll für Menschen wie auch für Maschinen einfach zu lesen sein.
Das Datenaustauschformat JSON soll für Menschen wie auch für Maschinen einfach zu lesen sein.
(Bild: JSON.org)

Mithilfe der JavaScript Object Notation, kurz JSON, lassen sich Daten menschen- und maschinenlesbar speichern und übertragen. Einen ähnlichen Ansatz verfolgen beispielsweise auch YAML und XML.

Der Name JavaScript Object Notation lässt eine enge Verbindung zwischen JSON und der Skriptsprache vermuten, die seit 1997 als ECMAScript standardisiert ist. Diese Annahme ist insofern richtig, als das Datenformat von JavaScript abgeleitet ist. In seiner Anwendung beschränkt es sich aber nicht auf die Skriptsprache.

JSON erfüllt ähnliche Aufgaben wie XML. Das Format speichert Daten strukturiert und in menschen- wie maschinenlesbarer Form. Dazu verwendet es Namen-Wert-Paare und eine Formatierung mit geschweiften Klammern. Es dient der Serialisierung programminterner Datenstrukturen für die Datenkommunikation wie auch die Auslagerung auf Permanentspeicher. Ein Hauptvorteil von JSON ist die Einfachheit der Implementation wie der Anwendung. Mit YAML existiert eine weitere Alternative, die seit Version 1.2 eine strikte Obermenge von JSON darstellt.

Herkunft und Anwendung der JavaScript Object Notation

Anfang der 2000er-Jahre entworfen, sollte JSON Web-Applikationen ermöglichen, die im Gegensatz zu den damals üblichen Java- und Flash-Apps ohne Plug-Ins, direkt im Browser ausführbar sind. Das Datenformat wurde also zunächst für die Verwendung in Kommunikationsprotokollen entwickelt.

Mindestens genauso gut eignet es sich aber auch als Dateiformat für Konfigurationsdateien und die allgemeine Datenspeicherung. Hierbei ist die Dateiendung „.json“ üblich. JSON dupliziert demnach die Funktionalität des zuvor schon existierenden XML-Formats, von dem es sich durch den generell simplifizierten Ansatz unterscheidet.

Seit 2017 ist JSON durch zwei unabhängige aber synchronisierte Standards definiert, die unterschiedliche Aspekte des Datenformats formalisieren. Während ECMA-404 nur die JSON-Syntax definiert, gibt RFC 8259 zusätzlich Anwendungshinweise, die auf eine erhöhte Interoperabilität zielen.

In welcher Beziehung stehen JSON und JavaScript?

Obwohl JSON von JavaScript abstammt, sind beide nicht hundertprozentig kompatibel. Einerseits beinhaltet das Datenformat Vereinfachungen, andererseits erlaubt es die unmaskierte Eingabe von Zeilenende- und Paragraphentrennzeichen aus dem Unicode Zeichensatz, die JavaScript nicht akzeptiert.

Die Inkompatibilität in der anderen Richtung betrifft insbesondere die folgenden, in JSON unbekannten Datentypen von JavaScript: undefined, Set, Map, Date, Error, Regular Expression, Function, Promise. Für den Datenaustausch mit JSON ist eine Konversion nötig. Zum Beispiel können Datumsangaben für den Export in Zeichenketten umgewandelt werden. Es gibt zwar Standards für derartige Konvertierungen, aber keiner ist allgemein akzeptiert.

Von solchen vereinzelten Kompatibilitätsproblemen abgesehen ist das Datenformat spätestens seit der ECMAScript-Version 5 sehr gut in die Scriptsprache integriert. Ein JSON-formatierter Datensatz lässt sich über die Funktion „JSON.parse()“ direkt importieren.

Wesentliche Eigenschaften der Zahlendarstellung in JSON

JSON besitzt nur ein sehr einfaches Konzept für die Repräsentation numerischer Werte. Das Datenformat unterscheidet nicht einmal Ganz- und Gleitkommazahlen. Eine Exponentialdarstellung wird ebenfalls unterstützt, die Interpretation der Werte ist aber implementationsabhängig. Es ist nicht festgelegt, ob eine ganze Zahl, eine Dezimalzahl und eine in wissenschaftlicher Notation, die denselben numerischen Wert haben, von einer JSON-Implementation als gleich oder ungleich interpretiert werden.

JSON und XML im Vergleich

JSON zielt auf die gleichen Einsatzbereiche wie XML, verfolgt aber einen stark vereinfachten Ansatz. Das reicht bis zum Verzicht auf eine Möglichkeit, Kommentare in ein JSON-Dokument einzubinden.

Während bei XML eine strikte Typisierung sowie die Spezifikation einer formalen Dokumentstruktur, benutzerspezifischer Datentypen und Tags über Schemata zum Standard gehören, sodass eine formale Validierung von XML-Dokumenten und -Datenströmen möglich ist, ist dieses Konzept bei JSON nur als Add-On verfügbar. Zudem wird die Standardisierung von JSON Schema in Form eines Internet Drafts eher lustlos verfolgt.

Auf der anderen Seite formatiert JSON Daten zwar ähnlich strukturiert wie XML, aber vergleichsweise kompakt. Der Größenunterschied eines formatierten Datensatzes hängt aber von der Art der Kodierung ab, die bei XML auf zwei verschiedene Arten erfolgen kann. Die einfachen Datentypen einer Struktur lassen sich sowohl als XML-Tags als auch in Form von Attributen speichern, wobei die letztere Art der Kodierung ähnlich kompakt ausfällt wie in JSON.

Vorteile und Schwächen von JSON

Im Überblick die wichtigsten Vorzüge und Nachteile der JavaScript Object Notation:

+ Einfachheit der Implementation und Anwendung.

+ einfache Einbindung in JavaScript mit „JSON.parse()“, ab ECMAScript-Version 5.

unscharfe Zahlendefinition.

keine universellen Standards für die Konvertierung nicht unterstützter JavaScript-Datentypen.

(ID:45231304)