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

ECS auf EC2-Cluster-Basis provisionieren

Amazon Elastic Container Service, Teil 2 – Praxis

ECS auf EC2-Cluster-Basis provisionieren

Docker-Image, Container, Cluster, Container-Definition, Cluster-Manager, Task-Definition, Task, Service-Definition und Services sind die essenziellen Konzepte von ECS. Schauen wir uns nun an, wie man aus diesen Zutaten eine cloudnative App backt. lesen

Container-Cluster unter AWS

Amazon Elastic Container Service, Teil 1 – Konzepte

Container-Cluster unter AWS

Für den Betrieb von Cloud-native Apps gibt es verschiedene Cluster Manager. In der Cloud sollte Software-Architekten dabei auch AWS ECS, den Elastic Container Service, mit in die engere Wahl nehmen. Wir stellen den älteren der beiden AWS-Container-Cluster-Manager vor. lesen

Microsoft Windows Terminal Preview

Neue Oberfläche für Befehlszeile, WSL und PowerShell

Microsoft Windows Terminal Preview

Mit einer neuen Windows-Terminal-App stellt Microsoft eine neue, gemeinsame Oberfläche für die Eingabeaufforderung, WSL und die PowerShell zur Verfügung. Das Open Source-Tool bietet dazu auch die Unterstützung von Registerkarten. lesen

PostgreSQL 12 Beta 1 mit allen Final-Funktionen

Verbessertes Handling großer Datenmengen

PostgreSQL 12 Beta 1 mit allen Final-Funktionen

PostgreSQL 12 soll im Herbst 2019 erscheinen. Aktuell ist bereits die erste Beta verfügbar. Diese enthält laut den Entwicklern alle Neuerungen, die auch die fertige Version erhält. lesen

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

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)