Einführung in JSON

0 Aktien
0
0
0
0

Einführung

JSON, kurz für JavaScript Object Notation, ist ein Format zum Datenaustausch. Wie der Name schon sagt, stammt JSON von der Programmiersprache JavaScript ab, ist aber für viele Sprachen verfügbar, darunter Python, Ruby, PHP und Java. JSON wird oft wie der Name “Jason” ausgesprochen.

JSON ist zudem gut lesbar, ressourcenschonend, eine gute Alternative zu XML und erfordert deutlich weniger Formatierung. Dieser informative Leitfaden erläutert die Daten, die Sie in JSON-Dateien verwenden können, sowie die allgemeine Struktur und Syntax des Formats.

Syntax und Struktur verstehen

JSON verwendet die Dateiendung .json, wenn es eigenständig verwendet wird. In anderen Dateiformaten (z. B. .html) definiert, kann es als JSON-Zeichenkette in Anführungszeichen oder als einer Variablen zugewiesenes Objekt erscheinen. Dieses Format wird zwischen Webserver und Client bzw. Browser übertragen.

Ein JSON-Objekt ist ein Schlüssel-Wert-Datenformat, das üblicherweise in geschweiften Klammern eingeschlossen ist. Bei der Arbeit mit JSON stößt man in der Regel auf JSON-Objekte in einer .json-Datei; sie können aber auch als JSON-Objekt oder -Zeichenkette im Kontext eines Programms vorliegen.

Hier ist ein Beispiel für ein JSON-Objekt:

{
"first_name" : "Sammy",
"last_name" : "Shark",
"location" : "Ocean",
"online" : true,
"followers" : 987 
}

Obwohl dies nur ein kurzes Beispiel ist und JSON-Dateien viele Zeilen lang sein können, zeigt es, dass das Format im Allgemeinen aus zwei runden Klammern ({}) besteht, gefolgt vom Schlüssel-Wert-Paar. Die Paare füllen den Zwischenraum aus. Die meisten in JSON verwendeten Daten sind in einem JSON-Objekt gekapselt.

Schlüssel-Wert-Paare werden durch einen Doppelpunkt getrennt, z. B. “key”: “value”. Innerhalb jedes Schlüssel-Wert-Paares steht ein Komma, sodass die Mitte eines JSON-Objekts wie folgt aussieht: “key”: “value”, “key”: “value”, “key”: “value”. Im vorherigen Beispiel lautet das erste Schlüssel-Wert-Paar “first_name”: “Sammy”.

JSON-Schlüssel stehen links vom Doppelpunkt. Sie müssen in doppelte Anführungszeichen gesetzt werden, z. B. “key”, und können beliebige gültige Zeichenketten sein. Innerhalb jedes Objekts müssen die Schlüssel eindeutig sein. Diese Schlüsselzeichenketten können Leerzeichen enthalten, z. B. «first_name», dies kann jedoch den Zugriff beim Programmieren erschweren. Daher ist es besser, Unterstriche zu verwenden, z. B. «first_name».

JSON-Werte befinden sich rechts vom Doppelpunkt. Konkret müssen diese einem der folgenden sechs Datentypen angehören:

  • Saiten
  • Zahlen
  • Objekte
  • Arrays
  • Boolesche Werte (wahr oder falsch)
  • null

Auf einer allgemeineren Ebene können Werte auch aus komplexen JSON-Objekt- oder Array-Datentypen konstruiert werden, was im nächsten Abschnitt behandelt wird.

Jeder der als Werte an JSON übergebenen Datentypen behält seine eigene Syntax bei, d. h. Zeichenketten werden in Anführungszeichen eingeschlossen, Zahlen jedoch nicht.

Bei .json-Dateien erhält man üblicherweise eine Vorlage, die sich über mehrere Zeilen erstreckt, JSON kann aber auch komplett in einer Zeile geschrieben werden, wie im folgenden Beispiel:

{ "first_name" : "Sammy", "last_name": "Shark", "online" : true, }

Dies ist häufiger bei anderen Dateitypen oder beim Auftreten einer JSON-Zeichenkette der Fall.

Das Schreiben von JSON über mehrere Zeilen hinweg verbessert die Lesbarkeit oft erheblich, insbesondere bei großen Datensätzen. Da JSON Leerzeichen zwischen seinen Elementen ignoriert, können Sie Ihre Schlüssel-Wert-Paare durch Doppelpunkte trennen, um die Daten noch besser lesbar zu machen:

{ 
"first_name" : "Sammy", 
"last_name" : "Shark", 
"online" : true 
}

Es ist wichtig zu beachten, dass JSON-Objekte zwar ähnlich aussehen, aber nicht dasselbe Format wie JavaScript-Objekte haben. Daher können Sie zwar Funktionen in JavaScript-Objekten verwenden, aber nicht als Werte in JSON. Der größte Vorteil von JSON ist seine einfache Übertragbarkeit zwischen Programmiersprachen in einem Format, das von allen beteiligten Sprachen verarbeitet werden kann. JavaScript-Objekte hingegen können nur direkt in der JavaScript-Programmiersprache verwendet werden.

JSON lässt sich durch Hierarchien aus verschachtelten Objekten und Arrays komplexer gestalten. Im nächsten Schritt erfahren Sie mehr über diese komplexen Strukturen.

Arbeiten mit komplexen Datentypen in JSON

Neben verschachtelten Arrays kann JSON auch verschachtelte Objekte im JSON-Format speichern. Diese Objekte und Arrays werden als Werte gesendet, die Schlüsseln zugewiesen sind, und können auch aus Schlüssel-Wert-Paaren bestehen.

Verschachtelte Objekte

In der folgenden Datei users.json wird für jeden der vier Benutzer (“sammy”, “jesse”, “drew”, “jamie”) ein verschachteltes JSON-Objekt als Wert übergeben. Jedes Objekt enthält eigene verschachtelte Schlüssel für “username” und “location”, die jeweils dem entsprechenden Benutzer zugeordnet sind. Jeder Benutzereintrag im folgenden Codeblock ist ein Beispiel für ein solches verschachteltes JSON-Objekt:

{
"sammy" : {
"username" : "SammyShark",
"location" : "Indian Ocean",
"online" : true,
"followers" : 987
},
"jesse" : {
"username" : "JesseOctopus",
"location" : "Pacific Ocean",
"online" : false,
"followers" : 432
},
"drew" : {
"username" : "DrewSquid",
"location" : "Atlantic Ocean",
"online" : false,
"followers" : 321
},
"jamie" : {
"username" : "JamieMantisShrimp",
"location" : "Pacific Ocean",
"online" : true,
"followers" : 654
}
}

In diesem Beispiel werden geschweifte Klammern verwendet, um ein verschachteltes JSON-Objekt mit dem Benutzernamen und den zugehörigen Standortdaten für jeden der vier Benutzer zu erstellen. Wie bei allen anderen Werten werden auch bei Objekten Kommas verwendet, um die Elemente zu trennen.

Verschachtelte Arrays

Daten lassen sich in JSON auch mithilfe von JavaScript-Arrays verschachteln, die als Werte übergeben werden. JavaScript verwendet eckige Klammern [ ] an beiden Enden des Array-Typs. Arrays sind geordnete Sammlungen und können Werte unterschiedlicher Datentypen enthalten.

Beispielsweise könnte man ein Array verwenden, wenn man mit einer großen Menge an Daten arbeitet, die gruppiert werden können, etwa wenn es verschiedene Websites und Social-Media-Profile gibt, die mit einem einzelnen Benutzer verknüpft sind.

Mit dem ersten verschachtelten Array könnte ein Benutzerprofil für “Sammy” folgendermaßen aussehen:

{ 
"first_name" : "Sammy",
"last_name" : "Shark",
"location" : "Ocean",
"websites" : [
{
"description" : "work",
"URL" : "https://www.digitalocean.com/"
},
{
"desciption" : "tutorials",
"URL" : "https://www.digitalocean.com/community/tutorials"
}
],
"social_media" : [
{
"description" : "twitter",
"link" : "https://twitter.com/digitalocean"
},
{
"description" : "facebook",
"link" : "https://www.facebook.com/DigitalOceanCloudHosting"
},
{
"description" : "github",
"link" : "https://github.com/digitalocean"
}
]
}

Die Schlüssel “websites” und “social_media” verwenden jeweils ein Array, um Informationen über Sammys zwei Website-Links und drei Social-Media-Profil-Links zu speichern. Man erkennt, dass es sich um Arrays handelt, an der Verwendung von eckigen Klammern.

Die Verwendung von Verschachtelungen im JSON-Format ermöglicht die Verarbeitung komplexerer und hierarchischer Daten.

Vergleich von JSON und XML

XML (Extensible Markup Language) ist eine Methode zur Speicherung zugänglicher Daten, die sowohl für Menschen als auch für Maschinen lesbar sind. Das XML-Format steht für die Verwendung in vielen Programmiersprachen zur Verfügung.

XML ähnelt JSON in vielerlei Hinsicht, benötigt aber deutlich mehr Text und ist länger und zeitaufwändiger zu lesen und zu schreiben. XML muss zudem mit einem XML-Parser verarbeitet werden, während JSON mit einer Standardfunktion geparst werden kann. Im Gegensatz zu JSON kann XML außerdem keine Arrays verwenden.

Hier ist ein Beispiel für das XML-Format:

<users>
<user>
<username>SammyShark</username> <location>Indian Ocean</location>
</user>
<user>
<username>JesseOctopus</username> <location>Pacific Ocean</location>
</user>
<user>
<username>DrewSquir</username> <location>Atlantic Ocean</location>
</user>
<user>
<username>JamieMantisShrimp</username> <location>Pacific Ocean</location>
</user>
</users>

Vergleichen Sie nun dieselben Daten in JSON-Darstellung:

{"users": [
{"username" : "SammyShark", "location" : "Indian Ocean"},
{"username" : "JesseOctopus", "location" : "Pacific Ocean"},
{"username" : "DrewSquid", "location" : "Atlantic Ocean"},
{"username" : "JamieMantisShrimp", "location" : "Pacific Ocean"}
] }

JSON ist deutlich kompakter und benötigt keine schließenden Tags, XML hingegen schon. Außerdem verwendet XML keine Arrays wie in diesem JSON-Beispiel (was man an den Klammern erkennt).

Wer mit HTML vertraut ist, wird feststellen, dass XML in der Verwendung von Tags sehr ähnlich ist. JSON ist zwar schlanker und übersichtlicher als XML und in vielen Situationen, beispielsweise bei AJAX-Anwendungen, schneller, doch sollten Sie zunächst den Typ Ihres Projekts kennen, bevor Sie sich für bestimmte Datenstrukturen entscheiden.

Ergebnis

JSON ist ein schlankes Format zum Teilen, Speichern und Bearbeiten von Daten. Es wird zunehmend von APIs unterstützt, beispielsweise von der Twitter-API. JSON eignet sich auch hervorragend für JavaScript und bietet zahlreiche Implementierungen für verschiedene gängige Programmiersprachen. Eine vollständige Übersicht der unterstützten Sprachen finden Sie auf der Webseite «Einführung in JSON».

Da Sie Ihre .json-Dateien wahrscheinlich nicht selbst erstellen, sondern aus anderen Quellen beziehen, ist es wichtig, sich weniger mit der JSON-Struktur und mehr mit der optimalen Verwendung von JSON in Ihren Anwendungen auseinanderzusetzen. Mit dem Open-Source-Tool Mr. Data Converter können Sie beispielsweise CSV- oder tabulatorgetrennte Daten, wie sie in Tabellenkalkulationsprogrammen vorkommen, in JSON konvertieren. Auch die Konvertierung von XML in JSON und umgekehrt ist mit der Creative-Commons-lizenzierten Website Utilities-online.info möglich.

Schließlich können Sie beim Übersetzen anderer Datentypen in JSON oder beim Erstellen eines eigenen Typs Ihr JSON mit JSONLint validieren und Ihr JSON im Kontext der Webentwicklung mit JSFiddle testen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte Ihnen auch gefallen