JSON
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.