JSON lesen und schreiben mit Python

Nachdem du jetzt in Dateien schreiben und aus ihnen lesen und auch kopieren, umbenennen und archivieren kannst, möchte ich dir jetzt JSON etwas näher bringen.

JSON (JavaScript Object Notation ist ein mittlerweile weit verbreitetes und von vielen Anwendungen unterstütztes Format zum strukturierten Austausch von Daten.

Weit verbreitet und etabliert heißt natürlich, dass Python mit Sicherheit eine kleine Hilfe dafür in der Hinterhand hat. 😉
Und genau so ist es auch: Mit dem json Modul bekommst du alles an die Hand.

Mit json kannst du Python Datenstrukturen direkt in einen JSON-String umwandeln (Serialisierung).
Natürlich geht auch die andere Richtung (Deserialisierung), bei der du einen JSON-String wieder in Python Datenstrukturen zurückwandelst.

Zwischen den Vorgängen kann der String zum Beispiel in einer Datei zwischengespeichert, von einem anderen System übertragen, oder aus einer Datenbank geladen worden sein.

FunktionBeschreibung
json.dumps(Python Datenstruktur)Übergebene Datenstruktur in JSON umwandeln
json.dump(Python Datenstruktur, Datei-Handle)Übergebene Struktur in JSON umwandeln und in übergebenen Datei-Handle schreiben
json.loads(String)Übergebenen String im JSON Format in eine Python Datenstruktur umwandeln
json.load(Datei-Handle)JSON aus übergebenem Datei-Handle auslesen und in Python Datenstruktur umwandeln

Du weißt nicht, was du mit den Dateien machen sollst?
Hier findest du Hilfe.

Und ein Video zum Artikel gibt es auch:

Umwandeln von Python Daten zu JSON String

Fangen wir einfach an.
Du möchtest zum Beispiel eine Liste oder ein Dictionary in einen String im JSON Format umwandeln.
Dafür kannst du aus dem json Modul einfach die Funktion dumps() benutzen und deinen Python Datentyp übergeben.

Heraus kommt dann ein JSON konformer String, der von anderen Systemen einfach gelesen und verstanden werden kann.

Du hast damit die Python Daten serialisiert.

string = json.dumps(<DATEN>)
import json
liste = [1, 'eins']
dictionary = {
    '0': 'null',
    '1': liste
}
liste_string = json.dumps(liste)
dictionary_string = json.dumps(dictionary)
print('Python Typ:', liste)
print('Json Typ:', liste_string)
print('Python Typ:', dictionary)
print('Json Typ:', dictionary_string)

Wie du in der Ausgabe sehen kannst, ist der Unterschied nicht groß. Und genau das gibt Python die Möglichkeit so einfach so konvertieren.

Umwandeln von Python Daten in JSON Datei

Teilweise musst du mit dem JSON gar nichts mehr machen. Also zum Beispiel kein Webservice, der auf die Daten wartet.
Stattdessen sollen die Daten in eine Datei geschrieben werden.
Vielleicht werden sie von einem anderen System abgeholt oder du willst sie manuell irgendwo hin verschicken.

Dafür gibt es die Funktion dump().
Mit dump() übergibst du auch wieder deine Python Datenstruktur. Dazu übergibst du noch einen erstellten Datei-Handle.
Der wird von dump() dann genutzt und direkt in die Datei reingeschrieben.

json.dump(<DATEN>, <DATEI-HANDLE>)
import json
liste = [1, 'eins']
dictionary = {
    '0': 'null',
    '1': liste
}
with open('Beispiel_Json.txt', 'w') as datei:
    json.dump(dictionary, datei)
with open('Beispiel_Json.txt', 'r')as datei:
    print(datei.read())

Umwandeln von JSON String zu Python Daten

Anders herum kannst du mit der Funktion loads() den JSON String wieder deserialisieren – also in Python Datentypen zurückwandeln.

datentyp = json.loads(<STRING>)
import json

string = '{"0": "null", "1": [1, "eins"]}'
dictionary = json.loads(string)

print(string)
print(dictionary)

Umwandeln von JSON Datei zu Python Daten

Genauso wird mit load() und dem Datei-Handle die Datei wieder ausgelesen und in Python Daten gewandelt. Und der Übergabe einer Datei der Inhalt der Datei wieder deserialisiert.

datentyp = json.load(<DATEI-HANDLE>)
import json

dictionary = {}
with open('Beispiel_Json.txt', 'r') as datei:
    print(dictionary)
    dictionary = json.load(datei)
    
print(dictionary)

Vielleicht als kleine Hilfe noch für dich…
Ich habe mir eine Eselsbrücke gebaut, mit der ich die vier Funktionen gut auseinander halten kann:
dump ist praktisch ein Abladeplatz es wird also etwas weggegeben.
dumps ist ein Abladeplatz mit s also String – es wird ein String abgegeben.

Genauso für load:
load ist laden – ich lade also etwas in mein Programm.
loads also laden mit s also ein String, der in mein Programm geladen wird.

Zusammenfassung

  • JSON – JavaScript Object Notation ist ein bekanntes Format zur strukturierten Datenübermittlung.
  • dump() und dumps() serialisieren eine Python Datenstruktur in einen String, bzw. in eine Datei.
  • load() und loads() deserialisieren einen String, bzw. eine Datei in eine Python Datenstruktur.

Kommentar verfassen

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

Scroll to Top