Definition

JavaScript Object Notation (JSON)

JavaScript Object Notation, kurz JSON, ist ein textbasiertes, menschenlesbares Format, das zum Austausch von Daten zwischen Clients und Webservern verwendet wird. JSON definiert eine Reihe von Strukturierungsregeln für die Darstellung von strukturierten Daten. JSON wird als Alternative zur Extensible Markup Language (XML) verwendet.

JSON basierte ursprünglich auf der Programmiersprache JavaScript und wurde als Skriptsprache für den Webbrowser Netscape Navigator eingeführt. JSON wird manchmal auch in Desktop- und serverseitigen Programmierumgebungen verwendet.

Der US-amerikanische Computerprogrammierer Douglas Crockford schuf JSON. Das Format ist vom JavaScript-Programmiersprachenstandard abgeleitet und folgt der JavaScript-Objektsyntax. JSON besteht aus Namen-Objekt-Paaren und Interpunktion in Form von runden und eckigen Klammern, Semikolons und Doppelpunkten. Jedes Objekt wird mit einem Operator definiert, zum Beispiel Text oder Bild, und mit einem Wert für diesen Operator gruppiert. JSON-Dateien werden mit .json gekennzeichnet. JSON hat ein sprachunabhängiges Format.

JSON hat eine einfache Struktur und verwendet keine mathematische Notation oder Algorithmen. Es ist leicht zu verstehen, auch für Benutzer mit begrenzter Programmiererfahrung. Es gilt als eine schnelle, leicht zugängliche Methode zur Erstellung interaktiver Seiten. Es hat sich zum bevorzugten Format für öffentlich zugängliche Webdienste entwickelt. Es bietet native Unterstützung für relationale und NoSQL-Datenbanken.

Neue JSON-Anwender müssen sich jedoch der potenziellen Sicherheitsauswirkungen bewusst sein. JSON-Skripte werden automatisch in jeder Webseite ausgeführt, die von einem Webbrowser aufgerufen wird. Folglich können sie verwendet werden, um JavaScript-Angriffe gegen einen Web-Client zu implementieren, wie zum Beispiel Command Injection oder Cross-Site Scripting.

Wenn ein Hacker beispielsweise Nicht-JSON-Code in einen String einfügt, wie zum Beispiel ein Trojaner, führt der gezielte Algorithmus den Text aus, als ob es sich um JavaScript handelt, und gibt dann den Wert der letzten Anweisung zurück. Wenn die einzige Anweisung ein JSON-Wert ist, hat dies keine Auswirkungen. Enthält eine vorherige Anweisung jedoch anderen JavaScript-Code, wird dieser vom Skript ausgeführt. Dadurch kann der Hacker auf alle Variablen zugreifen, auf die ein Skript Zugriff hat, und kann so möglicherweise den Computer eines Benutzers gefährden.

JSON-Beispiel
Abbildung 1: Diese grundlegende Struktur in einem Infrastructure as Code Tool ist ein Beispiel für JSON-Code.

Warum wird JSON verwendet?

JSON wurde von der International Organization for Standardization (ISO) als ISO/IEC 21778:2017 angenommen, mit dem Ziel, die Syntax gültiger JSON-Texte zu definieren.

JSON wird im Internet als Alternative zu XML für die Organisation von Daten verwendet. JSON ist sprachunabhängig und kann mit C++, Java, Python und vielen anderen Sprachen kombiniert werden. Im Gegensatz zu XML, das eine vollständige Markup Language ist, bietet JSON eine einfache Möglichkeit, Datenstrukturen darzustellen. JSON-Dokumente sind leicht und werden auf Webservern schnell ausgeführt.

Ein JSON-Beispiel

JSON besteht aus Arrays und Objekten sowie aus Namen und Wertepaaren. Zu den Satzzeichen, die in diesem Format verwendet werden, gehören Anführungszeichen, eckige und runde Klammern, Semikolons und Doppelpunkte.

Die Daten in JSON werden in Namens- und Wertepaaren geschrieben, ähnlich wie bei JavaScript-Objekteigenschaften. Ein Name-Wert-Paar besteht aus einem Namen, der in Anführungszeichen gesetzt wird, gefolgt von einem Doppelpunkt und einem bestimmten Wert.

Ein Array von Mitarbeiternamen kann beispielsweise so aussehen:

"Mitarbeiter":[

  {"vorname": "Max", "nachname": "Mustermann"},

  {"vorname": "Maxi", "nachname": "Mustermann"},

 ]

Jede Zeile ist ein Objekt, und beide Zeilen zusammen sind Teil eines Arrays. Die Namen in den Namens- und Wertepaaren umfassen Vorname und Nachname, während die Wertepaare die tatsächlich auftretenden Namen sind, wie Max, Maxi und Mustermann.

JSON-Objekte

JSON-Objekte sind ungeordnete Mengen von Namens- und Wertepaaren. Objekte werden in geschweifte Klammern { } geschrieben. Alles, was innerhalb der geschweiften Klammern steht, ist Teil des Objekts. Objekte können mehrere Namens- und Wertepaare enthalten. Auf jeden Namen folgt ein Doppelpunkt, und Name-Wert-Paare werden durch ein Komma getrennt.

Auf Objekte kann bei Bedarf zugegriffen werden, sie können geändert, gelöscht oder in einer Schleife verarbeitet werden.

JSON-Arrays

JSON-Arrays sind eine geordnete Liste von Werten. Arrays werden zum Speichern von Objekten, Strings, Zahlenwerten und booleschen Werten verwendet. Ein Array kann sich aus mehreren Datentypen zusammensetzen.

Arrays in JSON sind von eckigen Klammern [ ] umgeben. Jeder Wert in einem Array wird durch ein Komma getrennt. Benutzer können auf Array-Werte zugreifen und sie aktualisieren, löschen oder in eine Schleife stellen. Ein Array kann innerhalb eines anderen JSON-Arrays gespeichert werden; was man ein multidimensionales Array nennt.

JSON-Konvertierungen zwischen Text und Objekt

Es gibt zwei Methoden zur Konvertierung zwischen Text und Objekten: parse() und stringify(). Diese Methoden können verwendet werden, um Daten von einem Webserver zu lesen, wenn ein Entwickler einen JSON-String hat und ihn in ein Objekt umwandeln möchte. Sie können auch verwendet werden, wenn ein Benutzer ein JavaScript-Objekt über ein Netzwerk senden möchte, das zunächst in JSON konvertiert werden muss.

Parse()

Diese Methode akzeptiert einen JSON-String als Parameter und gibt automatisch ein JavaScript-Objekt zurück. Um parse() zu verwenden, erstellt man ein JavaScript String, der JSON-Syntax enthält, und verwendet dann die Funktion JSON.parse(), um den String in ein JavaScript-Objekt zu konvertieren.

Stringify()

Diese Methode akzeptiert ein Objekt als Parameter und gibt automatisch einen JSON-String zurück. Um stringify() zu verwenden, erstellt man ein JavaScript-Objekt und konvertiert es anschließend mit der Funktion stringify(). Danach speichert man den neuen Wert in einer neuen Variablen.

JSON versus HTML versus XML: Was sind die Unterschiede?

Die Hypertext Markup Language (HTML) ist ein textbasierter Ansatz zur Beschreibung der Struktur von Inhalten in einer HTML-Datei. Dieses Markup teilt einem Webbrowser mit, wie Text, Bilder und andere Formen von Multimedia in einer Webanwendung angezeigt werden sollen.

XML ist ebenfalls eine Auszeichnungssprache (Markup Language). Sie wird verwendet, um Datenformate zu erstellen, die bei der Codierung von Informationen für Dokumentation, Datenbankeinträge, Transaktionen und andere Funktionen verwendet werden.

Die wichtigste Alternative zu XML ist JSON. Wie XML ist JSON sprachunabhängig und kann mit C++, Java, Python und anderen Sprachen kombiniert werden. Im Gegensatz zu XML ist JSON lediglich eine Möglichkeit, Datenstrukturen darzustellen, und keine vollständige Auszeichnungssprache.

XML ist schwieriger zu handhaben als das JSON-Format. Die Konvertierung von XML in ein JavaScript-Objekt erfordert im Vergleich zu JSON mehrere Dutzend oder Hunderte von Codezeilen, und es wird ein XML-Parser benötigt. XML-Dokumente sind im Vergleich zu JSON schwieriger zu lesen.

HTML ist im Vergleich zu JSON relativ einfach. Es hat jedoch mehr Einschränkungen, und JSON ist flexibler. In JSON können auch komplexere Datenstrukturen verwendet werden als in HTML. HTML kann zum Beispiel keine Werte in Variablen speichern.

Diese Definition wurde zuletzt im Oktober 2022 aktualisiert

Erfahren Sie mehr über Softwareentwicklung

ComputerWeekly.de
Close