Definition „JavaScript Object Notation“

Was ist JSON?

| Autor / Redakteur: LineFeed / Stephan Augsten

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)

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.

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.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

API-Management im Unternehmen einführen

Strategien zur Schnittstellen-Implementierung

API-Management im Unternehmen einführen

APIs sind eine Schlüsseltechnologie in der heutigen digitalen Welt. Dieser Artikel beschreibt Strategien, um API-Management in Unternehmen einzuführen und die Schritte, wie Organisationen ihre IT mit Hilfe eines API-basierten Ansatzes transformieren können. lesen

Android Apps mit Android Jetpack und Kotlin erstellen

Kostenlose Online-Kurse von Google auf Udacity

Android Apps mit Android Jetpack und Kotlin erstellen

Google hat gemeinsam mit der Online-Akademie Udacity den kostenlosen Online-Lehrgang „Android-Apps mit Kotlin entwickeln“ entworfen. In 10 Lerneinheiten werden darin entsprechende Grundlagen der Android-Entwicklung vermittelt. lesen

App-Entwicklung für Philips Hue

Smart-Home-API aktivieren und ansprechen

App-Entwicklung für Philips Hue

Die Smart-Home-Lösung Philips Hue ist einsteigerfreundlich und birgt Chancen für Entwickler: Hue bietet eine simple API – und der Hersteller weist eindeutig darauf hin, dass Dritte eigene Hue-Apps entwickeln und auch kommerziell verwerten dürfen. lesen

Abfrage-API für Amazon Web Services erstellen

AWS Lambda und API Gateway, Teil 2

Abfrage-API für Amazon Web Services erstellen

Unsere erste Lambda-Funktion haben wir kürzlich erstellt und mit dem eingebauten Test-Framework online getestet. Nun wollen wir eine HTTPS-Rest-API über das Amazon API Gateway programmieren und als Trigger für AWS Lambda verwenden. Dies ist recht komfortabel über die grafische Management Console möglich. lesen

RestfulAPIs für AWS selbst gebaut

AWS Lambda und API Gateway, Teil 1

RestfulAPIs für AWS selbst gebaut

Amazon API Gateway soll das Erstellen, Veröffentlichen, Pflegen, Überwachen und Sichern von APIs jeder beliebigen Größenordnung sehr einfach machen. In diesem Beitrag zeigen wir, wie man dem Service einen AWS-Zugang via HTTPS ermöglicht. lesen

Google vereinfacht Anbindung an Cloud IoT Core

Cloud IoT Device SDK for Embedded C

Google vereinfacht Anbindung an Cloud IoT Core

Google stattet das Cloud IoT Device SDK for Embedded C mit Funktionen zum Verwalten und Verwenden von IoT-Geräten aus. Dadurch sollen sich Low-End-Geräte besser mit der Cloud verbinden lassen. lesen

Commits und Tests mit AWS CodeCommit und CodeBuild

CI/CD-Pipeline mit AWS-Tools, Teil 2

Commits und Tests mit AWS CodeCommit und CodeBuild

Ein neues Projekt ist in AWS CodeStar schnell erstellt. Umgehend kann man in den einzelnen Stufen experimentierten, z. B. mit neuen Commits zu Feature-Upgrades beitragen oder Unit-Tests implementieren. CodeStar visualisiert dabei den Projekt-Status und unterstützt die Tool-Integration. lesen

Programmieren mit Notepad++

Erweiterbarer Texteditor unter Windows

Programmieren mit Notepad++

Das Notepad++ ist ein mächtiger Texteditor. Dabei bietet das Tool Syntax Highlighting und weitere Entwickler-Funktionen und lässt sich als Open-Source-Software um zusätzliche Sprachen und Plugins bis hin zur vollständigen IDE erweitern. lesen

RAD Studio 10.3 von Embarcadero veröffentlicht

Mehr Produktivität mit C++ und Delphi

RAD Studio 10.3 von Embarcadero veröffentlicht

Bei der Version 10.3 von RAD Studio handelt es sich um ein umfassendes Update der integrierten Entwicklungsumgebung. C++ - und Delphi-Entwickler sollen damit Applikationen für Windows 10, macOS, Linux Server, iOS und Android schneller erstellen können. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45231304 / Definitionen)