JSON

Aus DataScience_Lernen_Wiki
Zur Navigation springen Zur Suche springen

Einleitung

JSON steht für JavaScript Object Notation und ist, wie auch YAML, ein serielles Datenformat. Ursprünglich wurde JSON ab 2000 von Douglas Crockford für JavaScript entwickelt, hat sich dann aber dank der einfachen Handhabung zu einem von vielen Programmiersprachen benutztem und sehr weit verbreitetem Datenformat entwickelt.

Sämtliche in JavaScript verfügbaren Datentypen können auch in JSON eingesetzt werden. Die von JSON verwendeten Datenstrukturen sind Listen (Arrays) und assoziative Schlüssel-Wert-Paare, die sich beliebig einander schachteln lassen, wodurch jede Form von Daten repräsentiert werden kann. Um zu bestimmen, ob eine bestimmte Datenstruktur einer Vorlage entspricht, können ein JSON-Schema definiert werden.

JSON ist Teil der Python-Standardbibliothek und muss nicht seperat installiert werden. Die Dateiendung von in JSON formatierten Daten ist .json.


Datentypen

Die folgenden Datentypen können in JSON-Dokumenten verwendet werden.


Nullwert

Der Nullwert entspricht None in Python und wird durch null repräsentiert.

Bool'scher Wert

Analog zu True und False in Python verwendet JSON true und false.

Zahlen

Zahlen köennen entweder Integerwerte oder Dezimalzahlen mit Dezimalpunkt sein, mit einem Minus als erstem Zeichen für negative Werte. Exponenten werden mit e eingeleitet, gefolgt vom Exponenten und gegebenenfalls einem Vorzeichen.

Zeichenketten (Strings)

Zeichenketten werden entweder in doppelte oder einfache Anführungszeichen eingeschlossen. Die Zeichen sind in Unicode; Escapesequenzen werden mit \ eingeleitet.

Listen (Arrays)

Wie auch in Python werden Listen mit eckigen Klammern definiert; Listenelemente werden per Komma getrennt.

Assoziative Werte (Dictionaries)

Assoziative Werte sind Schlüssel-Wert-Paare und werden, ebenfalls wie in Python, in geschweifte Klammern eingeschlossen. Mehrere Paare werden durch Kommata getrennt; der Schlüssel ist ein String, der Wert kann ein beliebiger Datentyp sein.

Beispieldokument

In diesem Beispieldokument sind alle im vorherigen Kapitel aufgeführten Datentypen enthalten:

{
  "Name": "Kurt Kleber",
  "lebt": true,
  "Alter": 27,
  "Ponies": ['Kalle', 'Klaudia', 'Kim']
  "Adresse": {
    "Strasse": "Ponystrasse 1",
    "Stadt": "Ponyhausen",
  },
  "Ehefrau": null
}

In diesem Beispiel werden alle Daten in einer zentralen, assoziativen Liste mit Schlüssel-Wert-Paaren gespeichert. Statt dessen wäre natürlich auch eine einfache Liste möglich.

JSON in Python

JSON ist ein in Python häufig verwendetes Dateiformat und wird nativ unterstützt.
Mit dem Befehl dumps wird eine Python-Datenstruktur in JSON als String konvertiert. Ein solcher JSON-String kann durch loads wieder in eine Python-Datenstruktur umgewandelt werden.

import json

json_string = json.dumps(['beliebige', {'daten': ('struktur', None, 1.0, 2)}])
print(json_string)

python_struktur = json.loads(json_string)
print(python_struktur)

Dieser Code erzeugt die folgende Ausgabe:

'["beliebige", {"daten": ["struktur", null, 1.0, 2]}]'
['beliebige', {'daten': ['struktur', None, 1.0, 2]}]

Dabei ist zu beachten, dass der Schlüssel, z.B. "daten", immer ein String sein muss, im Gegensatz zum Python-Dictionary, welches beliebige Datentypen als Schlüssel akzeptiert.