Was ist JSON?

JavaScript Object Notation (JSON) mit Beispielen und Verwendung

Ist JSON [ˈdʒeɪsən] ein bekannter Informatiker, der ein kompaktes Datenformat entwickelt hat, das gut lesbar ist und einen einfachen und schnellen Datenaustausch zwischen Anwendungen ermöglicht?
Halt! Das ist natürlich nur die halbe Wahrheit. JSON ist natürlich keine Person, sondern eine Notation. Eine Notation, die mittlerweile weit verbreitet und stetig erweitert worden ist.

JavaScript Object Notation schimpft sich diese Notation in vollem Umfang. Oder JavaScript Object Notation Remote Procedure Call ein darauf aufbauendes Protokoll.
Da klingt die Abkürzung JSON oder JSON-RPC schon wesentlich umgänglicher.
JSON Objekte werden für den Datenaustausch zwischen Anwendungen, für gewöhnlich zwischen einem Server und einem Clienten benutzt. Oft werden JSON und XML in einem Atemzug genannt. Das liegt daran, dass sie prinzipiell beide Lösungen für den Datenaustausch bieten. Trotzdem gibt es grundlegende Unterschiede zwischen JSON und XML – aber das werden wir gleich sehen.

Wieso weshalb warum, wer nicht fragt bleibt dumm

Wieso sollte man JSON nutzen? Die Vorteile lassen sich schnell auf den Punkt bringen:JSON ist verbreitet:

JSON ist verbreitet

Wenn auch in der JavaScript-Welt entstanden, gibt es heute in nahezu jeder verbreiteten Programmiersprache einen Parser für JSON Objekte.

Standardisierte Struktur

Ein JSON-Objekt hat eine feste Struktur, wie Daten repräsentiert werden. Dadurch ist es für Entwickler einfach, JSON Requests zu erstellen und auszuwerten – das Datenformat ist immer gleich und erwartbar. Hinzu kommt, dass JSON auch für Menschen leicht lesbar ist.

Wenig Overhead

Ein JSON-Objekt kommt ohne umfangreiche Beschreibung und Strukturdaten aus, es ist immer nach dem Key-Value-Prinzip aufgebaut.

Ein JSON-Beispiel

Wie sieht JSON aus? Stellen wir uns vor, wir haben 6 IT-Talente in unserer Datenbank, die ein Stipendium bekommen haben. In der JSON-Syntax wird die Liste dieser IT-Talente wie folgt repräsentiert:

"IT-Talente": [
{"name":"Thomas", "alter":"25", "Stipendium":"2016/2017"},
{"name":"Katharina", "alter":"18", "Stipendium":"2016/2017"},
{"name":"Michael", "alter":"26", "Stipendium":"2016/2017"},
{"name":"Andrei", "alter":"35", "Stipendium":"2016/2017"},
{"name":"Bastian", "alter":"14", "Stipendium":"2016/2017"},
{"name":"Dirk", "alter":"22", "Stipendium":"2016/2017"}
]

Wie Du siehst, werden die IT-Talente durch (beliebig viele!) Key/Value Paare innerhalb geschweifter Klammern definiert. Die IT-Talente wiederum sind in Arrayform organisiert.
Man bezeichnet jedes einzelne IT-Talent als JSON-Objekt und das Array IT-Talente als Array von JSON-Objekten.

Es ist nun ein leichtes, dieses Array von JSON-Objekten zu realisieren:

var it-talente = [
{"name":"Bastian", "alter":"25", "Stipendium":"2016/2017"},
{"name":"Katharina", "alter":"18", "Stipendium":"2016/2017"},
{"name":"Michael", "alter":"26", "Stipendium":"2016/2017"},
{"name":"Thomas", "alter":"35", "Stipendium":"2016/2017"},
{"name":"Andrei", "alter":"14", "Stipendium":"2016/2017"},
{"name":"Dirk", "alter":"22", "Stipendium":"2016/2017"}
];

Natürlich ist auch die einfache Erstellung eines JSON-Objekts möglich:

var basti = {"name":"Basti", "alter":"25", "Stipendium":"2016/2017"};

Aber wie kommen wir nun an die Daten, die in einem JSON-Objekt oder einem Array von JSON-Objekten gespeichert sind?
Nichts einfacher als das, man greift einfach wie üblich auf die entsprechenden Datentypen zu.
Zum Beispiel:
JSON-Objekt:

document.writeln(basti.name);

Array von JSON Objekten:

document.writeln(it-talente[1].name);

Verwendung von JSON am Beispiel JavaScript

JSON-Objekte in JavaScript

JSON hat seinen Ursprung in JavaScript, nach und nach sind aber für nahezu jede gängige Programmiersprache Parser entstanden.
Das JSON-Datenformat kann mit Hilfe der eval()-Funktion in JavaScript ausgewertet werden. Hierbei ist jedoch Vorsicht geboten, da über JSON-Objekte prinzipiell auch Schadcode übertragen und durch die eval()-Funktion ausgeführt werden könnte.
JavaScript bietet aber einen zusätzlichen JSON-Parses, der diese Gefahren nicht birgt.
Ein Beispiel, wie wir unser Oben erstelltes JSON-Objekt in ein JavaScript-Objekt umwandeln:

var JavaScriptObjekt = JSON.parse(basti);

JavaScript-Objekte in JSON

Natürlich können wir auch andersherum JavaScript-Objekte, z.B. für die Datenübertragung in JSON-Objekte umwandeln:

var JSONObjekt = JSON.stringify(JavaScriptObjekt);

JSON vs. XML

Auf den ersten Blick stehen JSON und XML in Konkurrenz zueinander, es gibt aber durchaus Unterschiede, die die beiden Formate voneinander abgrenzen und so je nach Situation JSON oder XML sinnvoller für die Verwendung machen.
XML (“Extensible Markup Language”) ist eine Markup Language mit deklarativem Charakter, JSON hingegen ist nur eine Syntax, wie Objekte, die bereits deklariert sind, dargestellt werden.
JSON eignet sich daher besonders, wenn Werte in fest definierten Strukturen übertragen werden sollen. Zum Beispiel immer neue IT-Talente, die zwar einen anderen Namen und ein anderes Alter haben, aber immer aus den Daten Name, Alter und Stipendium bestehen.
XML spielt dagegen eine größere Roller, wenn flexible Objekte übertragen werden sollen, die sich in der Struktur unterscheiden (Beispielsweise, wenn ein IT-Talent beliebig viele unterschiedliche Strukturen und Werte haben kann).

Rückmeldungen