Posted on Leave a comment

JSON: kompaktes Format für die Datenspeicherung

JSON: kompaktes Format für die Datenspeicherung

JSON stellt ein Format dar, das es ermöglicht, Daten strukturiert abzuspeichern. Es spielt insbesondere für den Austausch von Daten über ein Netzwerk eine wichtige Rolle. Damit dieser einwandfrei funktioniert, ist es wichtig, einheitliche Strukturen zu verwenden. Dafür gibt es verschiedene Methoden. Weit verbreitet sind beispielsweise XML-Dokumente. Diese kommen häufig zum Einsatz, um Dateien über das Internet zu versenden. Eine etwas neuere Möglichkeit stellt JSON dar. Diese Abkürzung steht für JavaScript Object Notation. Dieses Datenformat entstand 2001.

Wofür steht der Begriff JSON?

Wenn Sie Informationen abspeichern oder über ein Netzwerk versenden, ist es sinnvoll, hierfür Dateien zu verwenden. Dabei handelt es sich um abgeschlossene Einheiten, die sich leicht als Ganzes übermitteln lassen. In dieser Datei können Sie die Inhalte nach Ihren Vorstellungen anordnen. Wenn menschliche Anwender untereinander Dateien austauschen, dann verwenden sie hierfür meistens Formate wie .doc oder .xls. Dabei handelt es sich um spezielle Dateitypen, die für die Verwendung mit einem Textverarbeitungs- oder Tabellenkalkulationsprogramm vorgesehen sind. Sie enthalten neben den eigentlichen Inhalten noch viele weitere Informationen für die Formatierung und das Layout. Das sorgt für eine ansprechende und leicht verständliche Darstellung, die dem menschlichen Nutzer entgegenkommt.

Diese Formate bringen jedoch zwei Probleme mit sich. Zum einen enthalten sie zahlreiche zusätzliche Informationen, die die Datenmenge, die Sie übertragen müssen, stark erhöhen. Zum anderen erschweren diese zusätzlichen Daten die automatisierte Auswertung mit einem Computerprogramm. Daher ist es sinnvoll, hierbei reine Textdateien zu verwenden. Wenn Sie dabei jedoch nur die eigentlichen Inhalte auflisten, kann es schwierig sein, deren Bedeutung nachzuvollziehen. Falls Sie beispielsweise den Wert einer Bestellung festhalten wollen, ist es nicht ausreichend, einfach die entsprechende Zahl anzugeben. Das würde die Zuordnung sehr schwierig gestalten. Stattdessen ist es wichtig, anzugeben, dass es sich hierbei um den Bestellwert handelt.

Nun könnten der Sender und der Empfänger der Daten ein ganz eigenes System miteinander vereinbaren, um die Struktur der Datensätze festzulegen. Um die Daten automatisch auszuwerten, müsste man das Computerprogramm dann an das festgelegte System anpassen. Allerdings gibt es hierfür auch allgemeine Strukturen, um diese Vorgaben zu machen. Dabei erfolgt die Strukturierung der Daten nach einem fest vorgegebenen System. Bei JSON handelt es sich um ein Datenformat, das Sie hierfür verwenden können. Dieses steht in Konkurrenz zur Auszeichnungssprache XML, die genau dem gleichen Zweck dient.

Der große Vorteil eines einheitlichen Systems mit festen Regeln besteht zum einen darin, dass Sie auf genaue Absprachen zwischen Sender und Empfänger verzichten können. Alle beteiligten Personen können sich selbstständig über die Regeln für JSON informieren. Das kann viel Arbeit sparen. Zum anderen bieten zahlreiche Programmiersprachen vorgefertigte Funktionen für JSON. Diese kann der Programmierer einfach in sein Programm einbinden, um ein JSON-Dokument schnell und einfach zu erstellen oder auszuwerten. Das stellt eine erhebliche Arbeitserleichterung dar.

Bei der Arbeit mit JSON ist es üblich, die Daten in einer Datei mit der Endung .json zu speichern. Dabei ist es jedoch wichtig, darauf zu achten, dass sich dieser Begriff nicht auf das entsprechende Dateiformat bezieht. Dieses soll lediglich darauf hinweisen, dass die Inhalte der Datei den strukturellen Anforderungen von JSON entsprechen. Es handelt sich dabei jedoch um eine reine Textdatei. JSON bezieht sich daher nur auf die Inhalte der Datei. Diese müssen nach den Regeln dieses Formats aufgebaut sein. Dabei ist es unerheblich, ob Sie diese Inhalte in einer Datei mit der Endung .json, .txt oder mit einer weiteren Endung für Textdateien abspeichern.

Die Anwendungsmöglichkeiten für JSON

JSON bietet den Vorteil, dass die gespeicherten Daten für menschliche Anwender leicht zu verstehen sind. Darüber hinaus bieten sie sich jedoch auch sehr gut für eine automatische Bearbeitung mit einem Computerprogramm an. Daher eignen sie sich hervorragend für Aufgaben, bei denen sowohl eine manuelle als auch eine automatische Bearbeitungsmöglichkeit gewünscht ist. Besonders häufig kommt JSON für die Datenübertragung über das Internet zum Einsatz. Auf diese Weise lassen sich die Informationen aufbereiten und in einer Datei übermitteln.

Zahlreiche Programmiersprachen unterstützen JSON

Der Begriff JSON macht bereits deutlich, dass ein enger Zusammenhang zur Programmiersprache JavaScript besteht. Dieses Datenformat wurde ursprünglich dazu entwickelt, Daten zwischen Internetseiten mit JavaScript und einem Server zu übermitteln. JSON ist gültiges JavaScript und lässt sich daher problemlos in jedes Programm, das mit dieser Programmiersprache erstellt ist, einbinden.

Aufgrund der großen Vorteile, die JSON bietet, haben jedoch auch beinahe alle übrigen gängigen Programmiersprachen dieses Datenformat implementiert – oder es besteht zumindest eine externe Bibliothek, die sich zu diesem Zweck einbinden lässt. Das bedeutet, dass Sie auf Funktionen zugreifen können, mit denen sich JSON-Code automatisch erstellen oder auswerten lässt. Hier sind einige Beispiele für Programmiersprachen, die JSON unterstützen: C, C++, C#, Java, Python, Ruby, PHP, Objective C, Perl und Visual Basic. Diese bereits recht umfangreiche Aufzählung ist jedoch bei Weitem noch nicht vollständig.

Wie ist ein JSON-Dokument aufgebaut?

Im nächsten Abschnitt wollen wir betrachten, wie ein JSON-Dokument aufgebaut ist. Das gibt die Möglichkeit, dieses Format selbst zu erstellen und auszuwerten. Außerdem hilft dies beim Verständnis, wenn Sie in einem Programm mit vorgefertigten Funktionen für den Umgang mit JSON arbeiten.

Eigenschaften in JSON: eine Kombination aus Schlüssel und Wert

Die Grundeinheiten eines JSON-Dokuments stellen ein Schlüssel und ein Wert dar. Der Schlüssel gibt immer an, welche Funktion die entsprechende Information hat. Um beim oben genannten Beispiel zu bleiben, können Sie hier beispielsweise angeben, dass es sich um den Bestellwert handelt. Als Wert geben Sie dann die entsprechende Zahl an. Der Schlüssel steht dabei immer in doppelten Anführungszeichen. Nach einem Doppelpunkt folgt dann der Wert. Wenn Sie den Bestellwert angeben möchten, können Sie dafür die folgende Kombination aus Schlüssel und Wert verwenden:

“Bestellwert”: 12.49

Diese Auszeichnung mit einem Schlüssel erleichtert die Zuordnung der Daten. Wenn Sie beispielsweise mehrere Datensätze anfertigen, können Sie auf diese Weise problemlos herausfinden, bei welcher Angabe es sich dabei jeweils um den Bestellwert handelt.

Verschiedene Daten für die Werte verwenden

Im Beispiel im vorigen Abschnitt haben wir für den Wert eine Zahl verwendet. Es bestehen jedoch noch zahlreiche weitere Möglichkeiten. Sehr häufig kommen hierbei beispielsweise Zeichenketten zum Einsatz. Diese müssen ebenfalls in Anführungszeichen stehen. Um dies an einem Beispiel zu zeigen, können Sie den Empfänger der Bestellung hinzufügen:

“Empfänger”: “Sebastian Hauser”

Auch die Verwendung boolescher Variablen ist möglich. Dabei handelt es sich um Wahrheitswerte, die angeben, ob eine bestimmte Aussage zutrifft oder nicht. Sie können den Wert true oder false annehmen. Achten Sie dabei darauf, dass es sich hierbei um feste Ausdrücke und nicht um Zeichenketten handelt. Daher stehen diese nicht in Anführungszeichen. Wollen Sie beispielsweise festhalten, ob es sich hierbei um einen Neukunden handelt, können Sie dafür folgende Information einfügen:

“Neukunde”: true

Eine sehr praktische Möglichkeit stellt die Verwendung von Arrays dar. Diese enthalten mehrere Felder, sodass Sie dabei verschiedene Daten zusammenfassen können – ähnlich wie bei einer Liste. Normalerweise entsprechen diese dem gleichen Datentyp. Es ist aber auch erlaubt, unterschiedliche Datentypen zu verwenden. Um auch dies wieder an einem Beispiel zu verdeutlichen, fügen wir die Artikel ein, die der Kunde bestellt hat. Da es sich hierbei um mehrere Produkte handeln kann, ist die Verwendung eines Arrays sinnvoll. In diesem Beispiel geben wir hierfür die Artikelnummer an. Es wäre jedoch auch möglich, Zeichenketten für die Produktbezeichnung zu verwenden. Die Werte stehen dabei in einer eckigen Klammer und sind durch ein Komma voneinander getrennt:

“Artikel”: [180012, 1723487, 2945672]

Eine weitere Möglichkeit stellen Null-Werte dar. Diese geben an, dass an der entsprechenden Stelle kein Eintrag vorhanden ist. Als Beispiel gehen wir davon aus, dass der Besteller auch seine Telefonnummer angeben kann. Das ist jedoch nicht verpflichtend. Sollte er darauf verzichtet haben, ist kein Eintrag vorhanden. Daher nehmen wir den folgenden Eintrag vor:

“Telefon”: null

Objekte in JSON erzeugen

JSON arbeitet mit sogenannten Objekten. Dabei handelt es sich um zusammengehörige Strukturen – beispielsweise für eine Bestellung. Auf diese Weise ist es möglich, mehrere Bestellungen in der gleichen Datei festzuhalten. Die Unterteilung in einzelne Objekte sorgt dabei dennoch für eine klare Abgrenzung.

Um ein Objekt zu erzeugen, stellen wir die einzelnen Einträge gemeinsam in eine geschweifte Klammer. Wir trennen sie jeweils durch ein Komma voneinander. Es ist üblich, die Inhalte eines Objekts einzurücken und jeweils in eine eigene Zeile zu schreiben. Das sorgt für übersichtlichere Strukturen. Insbesondere wenn die Daten für menschliche Nutzer vorgesehen sind, erleichtert das die Handhabung. Das ist jedoch nicht zwingend notwendig. Es ist auch möglich, alle Inhalte in eine Zeile zu schreiben – ohne Leerzeichen, Einrückungen und Zeilenumbrüche. Das ist insbesondere bei Dokumenten üblich, die ausschließlich für die automatische Auswertung vorgesehen sind. Das reduziert den notwendigen Speicherplatz, da auch Leerzeichen und Zeilenumbrüche Speicherkapazität beanspruchen.

Wenn wir nun die bisherigen Einträge in einem Objekt zusammenfassen, könnte dieses so aussehen:

Hierarchische Strukturen in JSON

JSON erlaubt auch hierarchische Strukturen. Das bedeutet, dass wir ein Objekt in ein anderes Objekt einfügen können. Als Beispiel wollen wir nun auch die Adresse des Kunden festhalten. Hierbei handelt es sich jedoch um eine Information, die aus mehreren einzelnen Teilen besteht: der Straße, der Hausnummer, der Postleitzahl und dem Wohnort. Diese Werte wollen wir jeweils einzeln abspeichern. Allerdings wollen wir auch deutlich machen, dass sie alle zur Adresse gehören. Daher fügen wir sie als untergeordnetes Objekt in unser bisheriges Dokument ein:

Dabei ist es möglich, beliebig viele weitere Ebenen einzufügen. Das macht es auch bei Daten mit sehr komplexen Strukturen möglich, für eine übersichtliche Darstellung zu sorgen.

Ein kurzer Vergleich zu XML

Zum Abschluss soll JSON noch kurz mit XML verglichen werden. Das liegt daran, dass der Anwendungszweck für die beiden Formate der gleiche ist. Das bedeutet, dass Sie sich bei der Übermittlung von Daten zwischen einer Formatierung in XML und JSON entscheiden können.

Beide Formate eignen sich sowohl für die manuelle Auswertung durch menschliche Anwender als auch für die maschinelle Bearbeitung. Das heißt, dass in diesem wichtigen Bereich keine Unterschiede bestehen. Eine weitere Gemeinsamkeit besteht darin, dass beide Formate hierarchische Strukturen unterstützen.

Um die Verschiedenheiten aufzuzeigen, soll nun kurz auf die Funktionsweise von XML eingegangen werden. Statt eines Schlüssels verwendet diese Sprache sogenannte Tags. Diese stehen vor und hinter dem Wert. Um beispielsweise den Bestellwert aus unserem Beispiel auszugeben, kommt in XML der folgende Ausdruck zum Einsatz:

<Bestellwert>12.49</Bestellwert>

Dieser Ausdruck ist für den menschlichen Anwender deutlich weniger übersichtlich als die Darstellung in JSON. Das erschwert die manuelle Bearbeitung. Darüber hinaus ist er wesentlich länger. Das führt dazu, dass XML-Dokumente erheblich mehr Speicherplatz beanspruchen als JSON-Dokumente, die die gleichen Informationen enthalten.

Ein weiterer Nachteil von XML besteht darin, dass hierbei sowohl untergeordnete Elemente als auch Attribute erlaubt sind. Das soll am Beispiel der Adresse deutlich gemacht werden. Hierbei könnte man die kompletten Inhalte als Attribute in einem Tag zusammenfassen:

<Adresse Straße="Hauptstraße" Hausnummer="12" Postleitzahl="11111" Stadt="Musterstadt" />

Alternativ dazu wäre es möglich, untergeordnete Tags zu verwenden:

Beide Alternativen stellen jedoch genau die gleichen Inhalte dar. Das führt zu unnötigen Unterschieden in der Struktur bei gleichen Inhalten. JSON weist hierbei jedoch keine Flexibilität auf, sodass gleiche Inhalte stets auf die gleiche Weise dargestellt werden. Auch das stellt einen wesentlichen Vorteil dar.

In der Summe ergibt sich daher das Fazit, das JSON XML in vielen Bereichen überlegen ist. Daher ist die Verwendung dieses Formats in der Regel vorzuziehen.

Bildquelle: https://commons.wikimedia.org/wiki/File:JSON_vector_logo.svg, Douglas Crockford

Ähnliche Produkte

Schreibe einen Kommentar