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

PostgreSQL 12 mit JIT Compiling und mehr Leistung

Neue Version der Open-Source-Datenbank

PostgreSQL 12 mit JIT Compiling und mehr Leistung

Die Entwickler von PostgreSQL stellen seit Oktober die neue Version 12 ihrer Datenbank zur Verfügung. In der neuen Version wird die JIT-Kompilierung automatisch aktiviert und die Leistung wurde verbessert. lesen

Der Weg in die Wolke mit Web-APIs

API-Hosting als Basis einer Microservice-Architektur

Der Weg in die Wolke mit Web-APIs

Microservices gelten heute als Basis moderner Anwendungsarchitekturen. Statt einer monolithischen und schwerfälligen Software wird die gesamte Funktionalität auf überschaubare Teilsysteme verteilt. Die entstandenen Services werden dann üblicherweise über das Internet und RESTful APIs zur Verfügung gestellt. lesen

Java-Update für AWS SDK empfohlen

Support für Java 6 endet im November

Java-Update für AWS SDK empfohlen

Das AWS SDK for Java 1.11.x wird ab Mitte November ohne Java-6-Support veröffentlicht. Sollten AWS-Kunden nach dem Stichdatum ihre Version des Software Development Kit aktualisieren, erhalten sie zur Laufzeit einen „Java version mismatch“-Fehler. lesen

Details zu Microsoft .NET Core 3.0

Neuer C#-Compiler, besserer Garbage Collector und mehr

Details zu Microsoft .NET Core 3.0

Microsoft hat einige Produkt-Updates für Entwickler bereitgestellt: .NET Core 3.0 ist als finales Release erhältlich. Compiler-seitig werden die neuen Versionen der Programmiersprachen C# 8.0 sowie F# 4.7 unterstützt. lesen

Pflegeanleitung für sichere Software

Sichere Softwareentwicklung – Teil 2

Pflegeanleitung für sichere Software

Will man eine Software auch sicher machen bedeutet das viel Arbeit. Es gilt Schwachstellen zu verhindern und von Beginn an einen sorg­samen Umgang mit Daten zu pflegen. Dazu gehört die Trennung von Datenverarbeitung und ihrer Darstellung ebenso wie eine konsequente Validierung von Ein- und Ausgangsdaten. Dann braucht es nur noch sichere Übertragungswege und regelmäßige Prüfroutinen. Oder fehlt da noch was? lesen

Einführung in Amazon SageMaker

Machine Learning mit Python, Teil 2

Einführung in Amazon SageMaker

Amazon SageMaker ist ein von AWS vollständig verwalteter Service, der den gesamten Workflow von Machine Learning abdeckt. Anhand der SageMaker-Demo von AWS illustrieren wir die wichtigsten Zusammenhänge, Grundlagen und Funktionsprinzipien. lesen

Das Datenmodell im JSON-Format

Dokumentorientierte NoSQL-Datenbanken, Teil 1

Das Datenmodell im JSON-Format

Für performante, elastisch skalierbare und global verfügbare Applikationen eignen sich DevOps und Microservices hervorragend. Die Datenverwaltung und -verarbeitung bereitet derweil oft Kopfschmerzen, denn relationale Datenbank-Konzepte stoßen schnell an ihre Grenzen. lesen

Windows Terminal Preview in Windows 10

Vorschau auf neue Microsoft-Konsole

Windows Terminal Preview in Windows 10

Mit der „Eingabeaufforderung“ hat Windows jahrzehntelang versierte Nutzer abgeschreckt oder zumindest ernüchtert. Mit Windows Terminal steht im Microsoft Store nun ein neues Tool bereit – derzeit noch als Preview und natürlich nur für Windows 10, aber die Erwartungen und Hoffnungen sind groß. lesen

Grundlagen zu AWS SAM

Serverless-Architekturen unter AWS, Teil 1

Grundlagen zu AWS SAM

In diesem Workshop wollen wir anhand einiger Beispiele lernen, serverlose Architekturen unter AWS bereitzustellen. Den thematischen roten Faden bilden dabei verwaltete AWS-Services, die im Kontext Machine Learning, Spracherkennung, Texterkennung, Bilderkennung stehen. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 45231304 / Definitionen)