JavaScript Object Notation (JSON)
Was ist JavaScript Object Notation (JSON)?
JavaScript Object Notation (JSON) ist ein textbasiertes, menschenlesbares Datenaustauschformat, das zum Austausch von Daten zwischen Webclients und Webservern verwendet wird. Das Format 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 Seitenskriptsprache für den Webbrowser Netscape Navigator eingeführt. JSON wird manchmal auch in Desktop- und serverseitigen Programmierumgebungen verwendet.
Der 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 geschweifte Klammern, 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 als .json bezeichnet. 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-Benutzer müssen sich jedoch der potenziellen Sicherheitsauswirkungen bewusst sein. JSON-Skripte werden automatisch in jeder Webseite ausgeführt, die von einem Webbrowser angefordert wird. Folglich können sie verwendet werden, um JavaScript-Angriffe gegen einen Web-Client zu implementieren, wie zum Beispiel eine Command Injection oder Cross-Site Scripting (XSS).
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 handeln würde, 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 so möglicherweise den PC eines Benutzers gefährden.
Warum wird JSON verwendet?
JSON wurde von der Internationalen Organisation für Normung als ISO/IEC 21778:2017 als Standard angenommen, mit dem Ziel, die Syntax gültiger JSON-Texte zu definieren.
JSON wird in JavaScript 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 Auszeichnungssprache ist, ist JSON einfach eine Möglichkeit, Datenstrukturen darzustellen. JSON-Dokumente sind klein 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 Klammern, geschweifte 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 mit den Namen von Mitarbeitern kann beispielsweise so aussehen:
„Mitarbeiter“:[
{„vorname“: „Jan“, „nachname“: „Schmidt“},
{„vorname“: „Markus“, „nachname“: „Huber“},
]
Jede Zeile ist ein Objekt, und beide Zeilen zusammen wären 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 Jan, Schmidt, Markus und Huber.
JSON-Objekte
JSON-Objekte sind ungeordnete Mengen von Namens- und Wertepaaren. Objekte werden in geschweifte Klammern geschrieben, wie hier { }. 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, Zeichenketten, Zahlenwerten und booleschen Werten verwendet. Ein Array kann aus mehreren Datentypen bestehen.
Arrays in JSON sind von eckigen Klammern umgeben, wie hier [ ]. 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; das nennt man ein multidimensionales Array.
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, erstellen Sie einen JavaScript-String, der JSON-Syntax enthält, und verwenden Sie 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, erstellen Sie ein JavaScript-Objekt und konvertieren es anschließend mit der Funktion stringify(). Danach speichern Sie 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 weitere Auszeichnungssprache. 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 auch 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.